Módulo:BibRules: mudanças entre as edições

sem sumário de edição
Sem resumo de edição
Sem resumo de edição
-- Define o alvo das regras
local target = frame:getParent().args[1] or frame.args[1]
if target == ""'' or target == nil then
target = mw.uri.decode(frame:callParserFunction("'#urlget"', "'fullpagename"'))
end
if target == ""'' or target == nil then
target = mw.title.getCurrentTitle().prefixedText
end
-- Semantic Scribunto foi carregado?
if not mw.smw then
return "'mw.smw module not found"'
end
-- Define variáveis básicas
local test, info, queryResult, a, b
local infos = {}
-- Funções básicas
function ucfirst(str)
return (str:gsub("'^%l"', string.upper))
end
-- Somente realize as análises de existir o campo 245
if frame:expandTemplate {title = "'Exist"', args = {"'245"', target}} ~= ""'' then
-- Record status
test = frame:expandTemplate {title = "'Field data string"', args = {"'000"', "'5"', "'1"', property = "'Leader"', fullpagename = target}} or false
if test == "'n"' then
a = 'Segundo o Líder, este é um registro <b>novo</b> (não um alterado ou revisado, expandido, excluído, etc.)'
info =
info = string.format( '* %s.' , a )
"* Segundo o Líder, este é um registro '''novo''' (não um alterado ou revisado, expandido, excluído, etc.)."
table.insert(infos, info)
elseif test == "'c"' then
a = 'Segundo o Líder, este é um registro <b>alterado ou revisado</b> (não um novo, expandido, excluído, etc.)'
info =
info = string.format( '* %s.', a )
"* Segundo o Líder, este é um registro '''alterado ou revisado''' (não um novo, expandido, excluído, etc.)."
table.insert(infos, info)
elseif test == "'a"' or test == "'d"' or test == "'p"' then
infoa = "* 'Segundo o Líder, este é um registro '''<b>expandido'''</b> ou '''<b>excluído'''</b> (não novo)."'
info = string.format( '* %s.', a )
table.insert(infos, info)
end
-- Type of record
test = frame:expandTemplate {title = "'Field data string"', args = {"'000"', "'6"', "'1"', property = "'Leader"', fullpagename = target}} or false
if test == "'a"' then
infoa = "* 'Segundo o Líder, este registro descreve um '''<b>material textual</b>'''."
info = string.format( '* %s.', a )
table.insert(infos, info)
end
-- Bibliographic level
test = frame:expandTemplate {title = "'Field data string"', args = {"'000"', "'7"', "'1"', property = "'Leader"', fullpagename = target}} or false
if test == "'m"' then
a = 'Segundo o Líder, este registro descreve um <b>item monográfico</b> (não parte de um item, não um item seriado, não uma coleção, etc.)'
info =
info = string.format( '* %s.', a )
"* Segundo o Líder, este registro descreve um '''item monográfico''' (não parte de um item, não um item seriado, não uma coleção, etc.)."
table.insert(infos, info)
end
-- Encoding level
test = frame:expandTemplate {title = "'Field data string"', args = {"'000"', "'17"', "'1"', property = "'Leader"', fullpagename = target}} or false
if test == "'1"' then
a = 'Segundo o Líder, este registro tem um nível <b>completo</b> de catalogação (mas o material não foi examinado)'
info =
info = string.format( '* %s.', a )
"* Segundo o Líder, este registro tem um nível '''completo''' de catalogação (mas o material não foi examinado)."
table.insert(infos, info)
elseif test == "'#"' then
a = 'Segundo o Líder, este registro tem um nível <b>completo</b> de catalogação (a descrição foi realizada com o material em mãos)'
info =
info = string.format( '* %s.', a )
"* Segundo o Líder, este registro tem um nível '''completo''' de catalogação (a descrição foi realizada com o material em mãos)."
table.insert(infos, info)
end
-- Descriptive cataloging form
test = frame:expandTemplate {title = "'Field data string"', args = {"'000"', "'18"', "'1"', property = "'Leader"', fullpagename = target}} or false
if test == "'a"' then
infoa = "* 'Segundo o Líder, este registro possui uma catalogação '''<b>compatível com as regras do AACR 2</b>'''."
info = string.format( '* %s.', a )
table.insert(infos, info)
else
infoa = "* 'Segundo o Líder, este registro possui uma catalogação '''<b>não compatível com as regras da ISBD</b>'''."
info = string.format( '* %s.', a )
table.insert(infos, info)
end
-- Explica a sintaxe "'(Biblioteca)NúmeroDeControle"'
local f001 = frame:expandTemplate {title = 'Field data string', args = {'001', '0', '', property = 'Control field data', fullpagename = target}}
local f001 =
local f003 = frame:expandTemplate {
frame:expandTemplate {title = "Field data string", args = {"001", "0", "", property = "Control field data", fullpagename = target}}
title = 'Field data string',
info =
args = {'003', '0', '', property = 'Control field data', fullpagename = target}
'* Internamente, este registro é identificado pelo código "' ..
f001 .. }
a = 'Internamente, este '";registro paraé sistemasidentificado externos, opelo código é "(' ..
b = 'para sistemas externos, o código é'
frame:expandTemplate {
info = string.format( '* %s "%s"; %s "(%s)%s".', a, f001, b, f003, f001 )
title = "Field data string",
args = {"003", "0", "", property = "Control field data", fullpagename = target}
} ..
")" .. f001 .. '".'
table.insert(infos, info)
-- Campo 005
queryResult = mw.smw.ask("'[["' .. target .. "']]|?Creation date#-F[l, d \\d\\e F \\d\\e Y]|headers=hide|mainlabel=-"')
local creationDate = ""''
if type(queryResult) == "'table"' then
for _, row in pairs(queryResult) do
for _, data in pairs(row) do
end
queryResult =
mw.smw.ask("'[["' .. target .. "']]|?Modification date#-F[l, d \\d\\e F \\d\\e Y]|headers=hide|mainlabel=-"')
local modificationDate = ""''
if type(queryResult) == "'table"' then
for _, row in pairs(queryResult) do
for _, data in pairs(row) do
end
end
a = 'O registro foi criado em:'
info =
b = "* O registro foi criado em: " .. creationDate .. ". 'Sua última transação foi em: " .. modificationDate .. "."'
info = string.format( '* %s %s. %s %s.', a, creationDate, b, modificationDate )
table.insert(infos, info)
-- Campo 008
local invalidCode = "'<strong class='"error'">código inválido para o local de publicação</strong>"'
local pubPlace_tbl = {
["'acb"'] = "'Acre"',
["'alb"'] = "'Alagoas"',
["'amb"'] = "'Amazonas"',
["'apb"'] = "'Amapá"',
["'bab"'] = "'Bahia"',
["'ceb"'] = "'Ceará"',
["'dfb"'] = "'Distrito Federal"',
["'esb"'] = "'Espírito Santo"',
["'gob"'] = "'Goiás"',
["'mab"'] = "'Maranhão"',
["'mgb"'] = "'Minas Gerais"',
["'msb"'] = "'Mato Grosso do Sul"',
["'mtb"'] = "'Mato Grosso"',
["'pab"'] = "'Pará"',
["'pbb"'] = "'Paraíba"',
["'peb"'] = "'Pernambuco"',
["'pib"'] = "'Piauí"',
["'prb"'] = "'Paraná"',
["'rjb"'] = "'Rio de Janeiro"',
["'rnb"'] = "'Rio Grande do Norte"',
["'rob"'] = "'Rondônia"',
["'rrb"'] = "'Roraima"',
["'rsb"'] = "'Rio Grande do Sul"',
["'scb"'] = "'Santa Catarina"',
["'seb"'] = "'Sergipe"',
["'spb"'] = "'São Paulo"',
["'tob"'] = "'Tocantins"',
["'bl "'] = "'Brasil"',
["'xxu"'] = "'Estados Unidos"',
["'flu"'] = "'Flórida, EUA"',
["'nyu"'] = "'Nova York, EUA"',
["'po "'] = "'Portugal"',
["'xxk"'] = "'Reino Unido"',
["'fr "'] = "'França"',
["'sp "'] = "'Espanha"',
["'gw "'] = "'Alemanha"',
["'xx "'] = "'<strong class='"error'">não foi identificado um local de publicação no campo 008</strong>"',
["'vp "'] = "'há vários locais de publicação"',
["'esp"'] = invalidCode,
["'eua"'] = invalidCode,
["'fra"'] = invalidCode,
["'   "'] = "'<strong class='"error'">é necessário informar um código de local de publicação, campo 008.</strong>"'
}
local f008pubPlace =
frame:expandTemplate {
title = "'Field data string"',
args = {"'008"', "'15"', "'3"', property = "'Control field data"', fullpagename = target}
}
if string.match(f008pubPlace, "'^[A-Z]"') then
infoa = "* <strong class='error'>O uso de maiúsculas não é permitido no campo 008, local de publicação.</strong>"'
info = string.format( '* <strong class="error">%s.</strong>', a )
table.insert(infos, info)
elseif pubPlace_tbl[f008pubPlace] then
infoa = "* 'O item possui a seguinte origem: " .. tostring(pubPlace_tbl[f008pubPlace]) .. "."'
info = string.format( '* %s %s', a, tostring( pubPlace_tbl[f008pubPlace] ) )
table.insert(infos, info)
else
infoa = "* 'O item possui a seguinte origem: " .. f008pubPlace .. "."'
info = string.format( '* %s %s', a, f008pubPlace )
table.insert(infos, info)
end
invalidCode = "'<strong class='"error'">código inválido para o idioma (campo 008 ou subcampo $h do campo 041)</strong>"'
local lang_tbl = {
["'por"'] = "'português"',
["'eng"'] = "'inglês"',
["'spa"'] = "'espanhol"',
["'ger"'] = "'alemão"',
["'fre"'] = "'francês"',
["'ita"'] = "'italiano"',
["'chi"'] = "'chinês"',
["'esp"'] = invalidCode,
["'ing"'] = invalidCode,
["'fra"'] = invalidCode,
["'pt"'] = invalidCode,
["'en"'] = invalidCode,
["'es"'] = invalidCode,
["'   "'] = "'<strong class='"error'">é necessário informar um código de idioma no campo 008.</strong>"'
}
local f008lang =
frame:expandTemplate {
title = "'Field data string"',
args = {"'008"', "'35"', "'3"', property = "'Control field data"', fullpagename = target}
}
if string.match(f008lang, "'^[A-Z]"') then
infoa = "* <strong class='error'>O uso de maiúsculas não é permitido no campo 008, idioma.</strong>"'
info = string.format( '* <strong class="error">%s.</strong>', a )
elseif lang_tbl[f008lang] then
infoa = "* 'Majoritariamente, o item se expressa no seguinte idioma: " .. tostring(lang_tbl[f008lang])'
info = string.format( '* %s %s', a, tostring( lang_tbl[f008lang] ) )
else
infoa = "* 'Majoritariamente, o item se expressa no seguinte idioma: " .. f008lang'
info = string.format( '* %s %s', a, f008lang )
end
-- Se existe o campo 041, mostra "'(traduzido do... )"' na mesma linha do idioma presente no 008
local f041existance = frame:expandTemplate {title = "'Exist"', args = {"'041"', target}} or ""''
if f041existance ~= ""'' then
test = mw.text.trim ( frame:expandTemplate {title = "'Field data string"', args = {"'041"', "'0"', "'1"', fullpagename = target}} )
if test == "'1"' then
local f041h = frame:expandTemplate {title = "'Select"', args = {"'041"', "'h"', target}}
f041h = lang_tbl[f041h] or f041h
info = info .string.format( "'%s (traduzido do "%s)', ..info, f041h .. ")."
end
end
table.insert(infos, info)
-- Testa se existe(m) ISBN(s) inválido(s)
test = frame:expandTemplate {title = "'Exist"', args = {"'020"', target}} or false
if test ~= ""'' then
test = frame:expandTemplate {title = "'Print ISBN"'} or false
if string.match(test, "error") then
infoa = "* <strong class='error'>ISBN inválido, por favor, reveja os números informados.</strong>"'
info = string.format( '* <strong class="error">%s.</strong>', a )
table.insert(infos, info)
end
-- Testa se existe(m) hifen(s) ou x minúsculo no ISBN
queryResult = mw.smw.ask("'[["' .. target .. "'#020]]|?Field data#|headers=hide|mainlabel=-"')
local f020 = ""''
if type(queryResult) == "'table"' then
for _, row in pairs(queryResult) do
for _, data in pairs(row) do
end
end
if string.match(f020, "'-"') then
infoa = '* <strong class=\'error\'>O ISBN não pode conter hifens. Apenas números e "X" maiúsculo.</strong>'
info = string.format( '* <strong class="error">%s.</strong>', a )
table.insert(infos, info)
elseif string.match(f020, "'x"') then
a = 'O ISBN não pode conter um x minúsculo. Apenas números e "X" maiúsculo'
info =
info = string.format( '* <strong class=\'"error\'">O ISBN não pode conter um x minúsculo. Apenas números e "X" maiúsculo%s.</strong>', a )
table.insert(infos, info)
end
-- Testa se há indicadores no campo 020
if string.sub(f020, 1, 1) ~= "'#"' then
a = 'O primeiro indicador do campo 020 foi preenchido, porém, ele não deve ser preenchido'
info =
info = string.format( "'* <strong class='"error'">O primeiro indicador do campo 020 foi preenchido, porém, ele não deve ser preenchido.</strong>"', a )
table.insert(infos, info)
end
if string.sub(f020, 2, 2) ~= "'#"' then
a = 'O segundo indicador do campo 020 foi preenchido, porém, ele não deve ser preenchido'
info =
info = string.format( "'* <strong class='"error'">O segundo indicador do campo 020 foi preenchido, porém, ele não deve ser preenchido%s.</strong>"', a )
table.insert(infos, info)
end
end
-- Testa o uso de maiúsculas no campo 041
if f041existance ~= ""'' then
test = mw.text.trim ( frame:expandTemplate {title = "'Field data string"', args = {"'041"', "'0"', "'1"', fullpagename = target}} )
if test == "'#"' then
infoa = "* <strong class='error'>Talvez o primeiro indicador do campo 041 tenha sido esquecido.</strong>"'
info = string.format( '* <strong class="error">%s.</strong>', a )
table.insert(infos, info)
end
test = frame:expandTemplate {title = "'Select"', args = {"'041"', "'a"', target}} or false
if string.match(test, "'^[A-Z]"') then
infoa = "* <strong class='error'>O uso de maiúsculas não é permitido nos códigos de idioma (campo 041).</strong>"'
info = string.format( '* <strong class="error">%s.</strong>', a )
table.insert(infos, info)
end
local accessPointPresence =
frame:callParserFunction {
name = "'#ask:[["' .. target .. "'#100||"' .. target .. "'#110||"' .. target .. "'#111||"' .. target .. "'#130]]"',
args = {"'?Field data"', format = "'count"', mainlabel = "'-"'}
} or 0
accessPointPresence = tonumber( accessPointPresence )
-- A seguir, testa se há subcampo $b e se há espaço no subcampo $c do campo 090
test = frame:expandTemplate {title = "'Exist"', args = {"'090"', target}} or false
if test ~= ""'' then
test = frame:expandTemplate {title = "'Select"', args = {"'090"', "'b"', target}} or false
if test == ""'' then
infoa = "* <strong class='error'>Está faltando o subcampo $b do campo 090 (notação de Cutter).</strong>"'
info = string.format( '* <strong class="error">%s.</strong>', a )
table.insert(infos, info)
end
-- A seguir, testa se não foi esquecida a letra do tíulo na notação de Cutter, caso haja um ponto de acesso 1XX
if accessPointPresence >= 1 and string.match(test, "'[0-9]$"') then
infoa = "* <strong class='error'>Falta a letra do título na notação de Cutter.</strong>"'
info = string.format( '* <strong class="error">%s.</strong>', a )
table.insert(infos, info)
end
test = frame:expandTemplate {title = "'Select"', args = {"'090"', "'c"', target}} or false
if string.match(test, "'%sed"') then
a = 'Nossa política de catalogação proíbe espaços na indicação de edição no número de chamada (090 $c)'
info =
info = "string.format( '* <strong class='"error'">Nossa política de catalogação proíbe espaços na indicação de edição no número de chamada (090 $c)%s.</strong>"', a )
table.insert(infos, info)
end
end
-- A seguir, testa (conta) se existe mais de um ponto de acesso principal
local f100existance = frame:expandTemplate {title = "'Exist"', args = {"'100"', target}}
if accessPointPresence > 1 or f100existance == "'multiple"' then
a = 'Foi registrado <b>mais de um ponto de acesso principal</b>. Isso não é permitido'
info =
info = "string.format( '* <strong class='"error'">Foi registrado '''mais de um ponto de acesso principal'''. Isso não é permitido%s.</strong>"', a )
table.insert(infos, info)
end
if f100existance ~= ""'' then
local f100 = mw.text.trim( frame:expandTemplate {title = "'Field data string"', args = {"'100"', "'0"', "'0"', fullpagename = target}} or '' )
info = "* 'O ponto de acesso principal foi dado a uma '''<b>pessoa</b>'''"
if f100:sub(1, 1) == "'0"' then
infoa = info .. " 'e a entrada começa pelo seu '''<b>primeiro nome</b>'''."
info = string.format( '* %s %s.', info, a )
table.insert(infos, info)
elseif f100:sub(1, 1) == "'1"' then
infoa = info .. " 'e a entrada começa pelo seu '''<b>sobrenome</b>'''."
info = string.format( '* %s %s.', info, a )
table.insert(infos, info)
elseif f100:sub(1, 1) == "'3"' then
infoa = info .. " 'e a entrada começa pelo seu '''<b>nome de família</b>'''."
info = string.format( '* %s %s.', info, a )
table.insert(infos, info)
elseif f100:sub(1, 1) == "'#"' then
infoa = info .. ", porém, <strong class='error'>o primeiro indicador não foi preenchido.</strong>"'
info = string.format( '* %s, porém, <strong class="error">%s.</strong>', info, a )
table.insert(infos, info)
elseif
f100:sub(1, 1) == "'2"' or f100:sub(1, 1) == "'4"' or f100:sub(1, 1) == "'5"' or f100:sub(1, 1) == "'6"' or
f100:sub(1, 1) == "'7"' or
f100:sub(1, 1) == "'8"' or
f100:sub(1, 1) == "'9"'
then
info a = info .. ", porém, <strong class='error'>o primeiro indicador foi preenchido incorretamente.</strong>"'
info = string.format( '* %s, porém, <strong class="error">%s.</strong>', info, a )
table.insert(infos, info)
table.insert(infos, info)
end
if f100:sub(2, 2) ~= "'#"' then
a = 'O segundo indicador do campo 100 foi preenchido, porém, ele não deve ser preenchido'
info =
info = string.format( "'* <strong class='"error'">O segundo indicador do campo 100 foi preenchido, porém, ele não deve ser preenchido%s.</strong>"', a )
table.insert(infos, info)
end
-- Testa se existe "', "' no subcampo $a (Nome, Sobrenome)
local f100a = frame:expandTemplate {title = "'Select"', args = {"'100"', "'a"', target}}
if f100a ~= ""'' then
if not string.match(f100a, "'.-,."') then
a = 'Em pontos de acesso, o nome pessoal deve ser invertido (Nome, Sobrenome). Verifique o campo 100'
info =
info = "string.format( '* <strong class='"error'">Em pontos de acesso, o nome pessoal deve ser invertido (Nome, Sobrenome). Verifique o campo 100%s.</strong>"', a )
table.insert(infos, info)
end
if string.match(f100a, "'[a-zÀ-ü],[A-ZÀ-ü]"') then
infoa = "* <strong class='error'>Falta espaço após a vírgula. Verifique o campo 100.</strong>"'
info = string.format( '* <strong class="error">%s.</strong>', a )
table.insert(infos, info)
end
end
local f100q = frame:expandTemplate {title = "'Select"', args = {"'100"', "'q"', target}}
if f100q ~= ""'' then
if not string.match(f100q, "'^%("') then
infoa = "* <strong class='error'>O subcampo $q do campo 100 necessita parênteses.</strong>"'
info = string.format( '* <strong class="error">%s.</strong>', a )
table.insert(infos, info)
end
end
local f100d = frame:expandTemplate {title = "'Select"', args = {"'100"', "'d"', target}}
if f100d ~= ""'' then
if string.match(f100, "'%$d %d%d%d%d$"') then
infoa = "* <strong class='error'>O subcampo $d do campo 100 necessita hífen.</strong>"'
info = string.format( '* <strong class="error">%s.</strong>', a )
table.insert(infos, info)
end
end
-- A seguir, testa se existe um ponto de acesso principal 110
local f110existance = frame:expandTemplate {title = "'Exist"', args = {"'110"', target}}
if f110existance ~= ""'' then
local f110 = mw.text.trim( frame:expandTemplate {title = "'Field data string"', args = {"'110"', "'0"', "'0"', fullpagename = target}} or '' )
info = "* 'O ponto de acesso principal foi dado a uma '''<b>entidade coletiva</b>'''"
if f110:sub(1, 1) == "'0"' then
infoa = info .. " 'e a entrada começa por um '''<b>nome invertido</b>'''."
info = string.format( '* %s %s.', info, a )
table.insert(infos, info)
elseif f110:sub(1, 1) == "'1"' then
infoa = info .. " 'e a entrada começa por um '''<b>nome de jurisdição</b>'''."
info = string.format( '* %s %s.', info, a )
table.insert(infos, info)
elseif f110:sub(1, 1) == "'2"' then
infoa = info .. " 'e a entrada começa por um '''<b>nome em ordem direta</b>'''."
info = string.format( '* %s %s.', info, a )
table.insert(infos, info)
elseif f110:sub(1, 1) == "'#"' then
infoa = info .. ", porém, <strong class='error'>o primeiro indicador não foi preenchido.</strong>"'
info = string.format( '* %s, porém, <strong class="error">%s.</strong>', info, a )
table.insert(infos, info)
elseif
f110:sub(1, 1) == "'3"' or f110:sub(1, 1) == "'4"' or f110:sub(1, 1) == "'5"' or f110:sub(1, 1) == "'6"' or
f110:sub(1, 1) == "'7"' or
f110:sub(1, 1) == "'8"' or
f110:sub(1, 1) == "'9"'
then
info a = info .. ", porém, <strong class='error'>o primeiro indicador foi preenchido incorretamente.</strong>"'
info = string.format( '* %s, porém, <strong class="error">%s.</strong>', info, a )
table.insert(infos, info)
table.insert(infos, info)
end
if f110:sub(2, 2) ~= "'#"' then
a = 'O segundo indicador do campo 110 foi preenchido, porém, ele não deve ser preenchido'
info =
info = string.format( "'* <strong class='"error'">O segundo indicador do campo 110 foi preenchido, porém, ele não deve ser preenchido%s.</strong>"', a )
table.insert(infos, info)
end
end
-- A seguir, testa se existe um ponto de acesso principal 111
local f111existance = frame:expandTemplate {title = "'Exist"', args = {"'111"', target}}
if f111existance ~= ""'' then
local f111 = mw.text.trim( frame:expandTemplate {title = "'Field data string"', args = {"'111"', "'0"', "'0"', fullpagename = target}} or '' )
info = "* 'O ponto de acesso principal foi dado a um '''<b>evento</b>'''"
if f111:sub(1, 1) == "'0"' then
infoa = info .. " 'e a entrada começa por um '''<b>nome invertido</b>'''."
info = string.format ( '* %s %s.' , info, a )
table.insert(infos, info)
elseif f111:sub(1, 1) == "'1"' then
infoa = info .. " 'e a entrada começa por um '''<b>nome de jurisdição</b>'''."
info = string.format ( '* %s %s.' , info, a )
table.insert(infos, info)
elseif f111:sub(1, 1) == "'2"' then
infoa = info .. " 'e a entrada começa por um '''<b>nome em ordem direta</b>'''."
info = string.format ( '* %s %s.' , info, a )
table.insert(infos, info)
elseif f111:sub(1, 1) == "'#"' then
infoa = info .. ", porém, <strong class='error'>o primeiro indicador não foi preenchido.</strong>"'
info = string.format ( '* %s, porém, <strong class="error">%s.</strong>', info, a )
table.insert(infos, info)
elseif
f111:sub(1, 1) == "'3"' or f111:sub(1, 1) == "'4"' or f111:sub(1, 1) == "'5"' or f111:sub(1, 1) == "'6"' or
f111:sub(1, 1) == "'7"' or
f111:sub(1, 1) == "'8"' or
f111:sub(1, 1) == "'9"'
then
info a = info .. ", porém, <strong class='error'>o primeiro indicador foi preenchido incorretamente.</strong>"'
info = string.format ( '* %s, porém, <strong class="error">%s.</strong>', info, a )
table.insert(infos, info)
table.insert(infos, info)
end
if f111:sub(2, 2) ~= "'#"' then
a = 'O segundo indicador do campo 111 foi preenchido, porém, ele não deve ser preenchido'
info =
info = string.format( "'* <strong class='"error'">O segundo indicador do campo 111 foi preenchido, porém, ele não deve ser preenchido%s.</strong>"', a )
table.insert(infos, info)
end
end
-- A seguir, testa se existe um ponto de acesso principal 130
local f130existance = frame:expandTemplate {title = "'Exist"', args = {"'130"', target}}
if f130existance ~= ""'' then
local f130 = mw.text.trim( frame:expandTemplate {title = "'Field data string"', args = {"'130"', "'0"', "'0"', fullpagename = target}} or '' )
info = "* 'O ponto de acesso principal foi dado a um '''<b>título uniforme</b>'''"
if f130:sub(1, 1) == "'#"' then
infoa = info .. ", porém, <strong class='error'>o primeiro indicador não foi preenchido.</strong>"'
info = string.format( '* %s, porém, <strong class="error">%s.</strong>', info, a )
table.insert(infos, info)
else
local f130a = frame:expandTemplate {title = "'Select"', args = {"'130"', "'a"', target}}
infoa = info .. ', ele será alfabetado como "' .. ucfirst( f130a:sub( f130:sub(1, 1) ) ) .. '".'
info = string.format( '* %s, ele será alfabetado como "<b>%s</b>".', info, a )
table.insert(infos, info)
end
if f130:sub(2, 2) ~= "'#"' then
a = 'O segundo indicador do campo 130 foi preenchido, porém, ele não deve ser preenchido'
info =
info = string.format( "'* <strong class='"error'">O segundo indicador do campo 130 foi preenchido, porém, ele não deve ser preenchido%s.</strong>"', a )
table.insert(infos, info)
end
end
-- A seguir, testa se existe um ponto de acesso principal. Se existir, testa se o primeiro indicador do campo 245 condiz com essa realidade
local f245ind1 = mw.text.trim( frame:expandTemplate {title = "'Field data string"', args = {"'245"', "'0"', "'1"', fullpagename = target}} ) or ''
if accessPointPresence == 0 then
if f245ind1 == "'1"' then
infoa = "* <strong class='error'>Não houve um ponto de acesso principal nos campos 1XX, desse modo, o primeiro indicador do campo 245 deve ter o valor \"0\".</strong>"'
info = string.format( '* <strong class="error">%s.</strong>', a )
table.insert(infos, info)
end
else
if f245ind1 == "'0"' then
info = "*a <strong= class='error'>Houve um ponto de acesso principal nos campos 1XX, desse modo, o primeiro indicador do campo 245 deve ter o valor \"1\".</strong>"'
info = string.format( '* <strong class="error">%s.</strong>', a )
table.insert(infos, info)
table.insert(infos, info)
end
end
-- a seguir, testa a relação entre a presença do campo 240 em relação a presença do campo 041 e a presença do subcampo $l
local f240existance = frame:expandTemplate {title = "'Exist"', args = {"'240"', target}}
if f240existance ~= ""'' then
local f240 = mw.text.trim( frame:expandTemplate {title = "'Field data string"', args = {"'240"', "'0"', "'0"', fullpagename = target}} )
if f041existance == ""'' then
infoa = "* <strong class='error'>Normalmente, quando há um campo 240, deve haver um campo 041.</strong>"'
info = string.format( '* <strong class="error">%s.</strong>' , a )
table.insert(infos, info)
end
local f240l = frame:expandTemplate {title = "'Select"', args = {"'240"', "'l"', target}} or ""''
if f240l ~= ""'' then
if string.match(f240l, "'^[a-zA-Z]{3}$"') then
infoa = "* <strong class='error'>É necessário informar o idioma por extenso ($l do campo 240) antecedido por um ponto no subcampo $a.</strong>"'
info = string.format( '* <strong class="error">%s.</strong>', a )
table.insert(infos, info)
end
if not string.match(f240, "\'%.\%s?\%$l"') then
infoa = "* <strong class='error'>O subcampo $l do campo 240 necessita ser antecedido por um ponto no subcampo anterior.</strong>"'
info = string.format ( '* <strong class="error">%s.</strong>', a )
table.insert(infos, info)
end
else
infoa = "* <strong class='error'>Normalmente, quando há um campo 240 $a, deve haver também um 240 $l. 240 $l não foi detectado.</strong>"'
info = string.format ( '* <strong class="error">%s.</strong>', a )
table.insert(infos, info)
end
if f240:sub(1, 1) == "'0"' then
infoa = "* 'O título uniforme não será exibido."'
info = string.format( '* %s.', a )
table.insert(infos, info)
elseif f240:sub(1, 1) == "'1"' then
infoa = "* 'O título uniforme será exibido."'
info = string.format( '* %s.', a )
table.insert(infos, info)
elseif f240:sub(1, 1) == "'#"' then
infoa = "<strong class='error'>Está faltando o primeiro indicador do campo 240.</strong>"'
info = string.format( '* <strong class="error">%s.</strong>', a )
table.insert(infos, info)
else
infoa = "* <strong class='error'>O primeiro indicador do campo 240 foi preenchido incorretamente.</strong>"'
info = string.format( '* <strong class="error">%s.</strong>', a )
table.insert(infos, info)
end
if f240:sub(2, 2) == "'#"' then
infoa = "* <strong class='error'>Está faltando o segundo indicador do campo 240.</strong>"'
info = string.format( '* <strong class="error">%s.</strong>', a )
table.insert(infos, info)
else
local f240a = string.gsub( mw.text.trim ( frame:expandTemplate {title = "'Select"', args = {"'240"', "'a"', target}} ), '[/:=.]$', '' )
infoa = "* 'O título uniforme será alfabetado como \"" .. ucfirst( f240a:sub( f240:sub(2, 2) + 1 ) ) .. '".'
b = ucfirst( f240a:sub( f240:sub(2, 2) + 1 ) )
info = string.format( '* %s "<b>%s</b>".', a, b )
table.insert(infos, info)
end
end
-- A seguir, informa se o título receberá o ponto de acesso principal ou secundário
local f245 = mw.text.trim( frame:expandTemplate {title = 'Field data string', args = {'245', '0', '0', fullpagename = target}} ) or ''
if f245ind1 == '0' then
a = 'O título recebeu o <b>ponto de acesso principal</b>'
info = string.format( '* %s.', a )
table.insert(infos, info)
elseif f245ind1 == '1' then
a = 'O título recebeu um <b>ponto de acesso secundário</b>'
info = string.format( '* <strong class="error">%s.</strong>', a )
table.insert(infos, info)
elseif f245ind1 == '#' then
a = 'Está faltando o primeiro indicador do campo 245'
info = string.format( '* <strong class="error">%s.</strong>', a )
table.insert(infos, info)
else
a = 'O primeiro indicador do campo 245 foi preenchido incorretamente'
info = string.format( '* <strong class="error">%s.</strong>', a )
table.insert(infos, info)
end
-- A seguir, testa se foi preenchido o segundo indicador do 245, se foi, mostra como será a alfabetação, removendo a pontuação final do subcampo $a ('/',':','='' ou '.')
local f245a = frame:expandTemplate {title = 'Select', args = {'245', 'a', target}}
if f245:sub(2, 2) == '#' then
a = 'Está faltando o segundo indicador do campo 245'
info = string.format( '* <strong class="error">%s.</strong>', a )
table.insert(infos, info)
else
a = 'O título será alfabetado como'
b = ucfirst( f245a:sub( f245:sub(2, 2) + 1 ) )
b = string.gsub( b, '%s?[%/:=.]$', '' )
info = string.format( '* %s "<b>%s</b>".', a, b )
table.insert(infos, info)
end
 
 
end -- end if 245
return table.concat(infos, "'\n"')
end