Módulo:BibRules: mudanças entre as edições
Ir para navegação
Ir para pesquisar
(lint) |
Sem resumo de edição |
||
Linha 1: | Linha 1: | ||
local p = {} |
local p = {} |
||
function p. |
function p.Rules(frame) |
||
-- Define o alvo das regras |
-- Define o alvo das regras |
||
local target = frame:getParent().args[1] or frame.args[1] |
local target = frame:getParent().args[1] or frame.args[1] |
||
if target == |
if target == "" or target == nil then |
||
target = mw.uri.decode(frame:callParserFunction( |
target = mw.uri.decode(frame:callParserFunction("#urlget", "fullpagename")) |
||
end |
end |
||
if target == |
if target == "" or target == nil then |
||
target = mw.title.getCurrentTitle().prefixedText |
target = mw.title.getCurrentTitle().prefixedText |
||
end |
end |
||
-- Semantic Scribunto foi carregado? |
-- Semantic Scribunto foi carregado? |
||
if not mw.smw then |
if not mw.smw then |
||
return |
return "mw.smw module not found" |
||
end |
end |
||
-- Define variáveis básicas |
-- Define variáveis básicas |
||
local |
local info, a, b |
||
local infos = {} |
local infos = {} |
||
-- Funções básicas |
-- Funções básicas |
||
local function ucfirst(str) |
local function ucfirst(str) |
||
return (str:gsub( |
return (str:gsub("^%l", string.upper)) |
||
end |
end |
||
-- Somente |
-- Somente realiza as análises se existir o campo 245 |
||
local f245 = |
|||
local f245 = mw.text.trim( frame:expandTemplate {title = 'Field data string', args = {'245', '0', '0', fullpagename = target}} ) or '' |
|||
mw.text.trim(frame:expandTemplate {title = "Field data string", args = {"245", "0", "0", fullpagename = target}}) or |
|||
if f245 ~= '' then |
|||
"" |
|||
if f245 ~= "" then |
|||
-- Record status |
-- Record status |
||
local recordStatus = |
|||
test = frame:expandTemplate {title = 'Field data string', args = {'000', '5', '1', property = 'Leader', fullpagename = target}} or false |
|||
frame:expandTemplate { |
|||
if test == 'n' then |
|||
title = "Field data string", |
|||
a = 'Segundo o Líder, este é um registro <b>novo</b> (não um alterado ou revisado, expandido, excluído, etc.)' |
|||
args = {"000", "5", "1", property = "Leader", fullpagename = target} |
|||
info = string.format( '* %s.' , a ) |
|||
} or false |
|||
if recordStatus == "n" then |
|||
a = "Segundo o Líder, este é um registro <b>novo</b> (não um alterado ou revisado, expandido, excluído, etc.)" |
|||
info = string.format("* %s.", a) |
|||
table.insert(infos, info) |
table.insert(infos, info) |
||
elseif |
elseif recordStatus == "c" then |
||
a = |
a = "Segundo o Líder, este é um registro <b>alterado ou revisado</b> (não um novo, expandido, excluído, etc.)" |
||
info = string.format( |
info = string.format("* %s.", a) |
||
table.insert(infos, info) |
table.insert(infos, info) |
||
elseif |
elseif recordStatus == "a" or recordStatus == "d" or recordStatus == "p" then |
||
a = |
a = "Segundo o Líder, este é um registro <b>expandido</b> ou <b>excluído</b> (não novo)" |
||
info = string.format( |
info = string.format("* %s.", a) |
||
table.insert(infos, info) |
table.insert(infos, info) |
||
end |
end |
||
-- Type of record |
-- Type of record |
||
local typeOfRecord = |
|||
test = frame:expandTemplate {title = 'Field data string', args = {'000', '6', '1', property = 'Leader', fullpagename = target}} or false |
|||
frame:expandTemplate { |
|||
if test == 'a' then |
|||
title = "Field data string", |
|||
a = 'Segundo o Líder, este registro descreve um <b>material textual</b>' |
|||
args = {"000", "6", "1", property = "Leader", fullpagename = target} |
|||
info = string.format( '* %s.', a ) |
|||
} or false |
|||
if typeOfRecord == "a" then |
|||
a = "Segundo o Líder, este registro descreve um <b>material textual</b>" |
|||
info = string.format("* %s.", a) |
|||
table.insert(infos, info) |
table.insert(infos, info) |
||
end |
end |
||
-- Bibliographic level |
-- Bibliographic level |
||
local bibliographicLevel = |
|||
test = frame:expandTemplate {title = 'Field data string', args = {'000', '7', '1', property = 'Leader', fullpagename = target}} or false |
|||
frame:expandTemplate { |
|||
if test == 'm' then |
|||
title = "Field data string", |
|||
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.)' |
|||
args = {"000", "7", "1", property = "Leader", fullpagename = target} |
|||
info = string.format( '* %s.', a ) |
|||
} or false |
|||
if bibliographicLevel == "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 = string.format("* %s.", a) |
|||
table.insert(infos, info) |
table.insert(infos, info) |
||
end |
end |
||
-- Encoding level |
-- Encoding level |
||
local encodingLevel = |
|||
test = frame:expandTemplate {title = 'Field data string', args = {'000', '17', '1', property = 'Leader', fullpagename = target}} or false |
|||
frame:expandTemplate { |
|||
if test == '1' then |
|||
title = "Field data string", |
|||
a = 'Segundo o Líder, este registro tem um nível <b>completo</b> de catalogação (mas o material não foi examinado)' |
|||
args = {"000", "17", "1", property = "Leader", fullpagename = target} |
|||
info = string.format( '* %s.', a ) |
|||
} or false |
|||
if encodingLevel == "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 = string.format("* %s.", a) |
|||
table.insert(infos, info) |
table.insert(infos, info) |
||
elseif |
elseif encodingLevel == "#" then |
||
a = |
|||
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)' |
|||
"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 = string.format( '* %s.', a ) |
|||
info = string.format("* %s.", a) |
|||
table.insert(infos, info) |
table.insert(infos, info) |
||
end |
end |
||
-- Descriptive cataloging form |
-- Descriptive cataloging form |
||
local descriptiveCatalogingForm = |
|||
test = frame:expandTemplate {title = 'Field data string', args = {'000', '18', '1', property = 'Leader', fullpagename = target}} or false |
|||
frame:expandTemplate { |
|||
if test == 'a' then |
|||
title = "Field data string", |
|||
a = 'Segundo o Líder, este registro possui uma catalogação <b>compatível com as regras do AACR 2</b>' |
|||
args = {"000", "18", "1", property = "Leader", fullpagename = target} |
|||
info = string.format( '* %s.', a ) |
|||
} or false |
|||
if descriptiveCatalogingForm == "a" then |
|||
a = "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) |
table.insert(infos, info) |
||
else |
else |
||
a = |
a = "Segundo o Líder, este registro possui uma catalogação <b>não compatível com as regras da ISBD</b>" |
||
info = string.format( |
info = string.format("* %s.", a) |
||
table.insert(infos, info) |
table.insert(infos, info) |
||
end |
end |
||
-- Explica a sintaxe '(Biblioteca)NúmeroDeControle' |
-- Explica a sintaxe '(Biblioteca)NúmeroDeControle' |
||
local f001 = |
|||
local f001 = frame:expandTemplate {title = 'Field data string', args = {'001', '0', '', property = 'Control field data', fullpagename = target}} |
|||
frame:expandTemplate { |
|||
title = "Field data string", |
|||
args = {"001", "0", "", property = "Control field data", fullpagename = target} |
|||
} |
|||
local f003 = |
|||
a = 'Internamente, este registro é identificado pelo código' |
|||
frame:expandTemplate { |
|||
b = 'para sistemas externos, o código é' |
|||
title = "Field data string", |
|||
info = string.format( '* %s "%s"; %s "(%s)%s".', a, f001, b, f003, f001 ) |
|||
args = {"003", "0", "", property = "Control field data", fullpagename = target} |
|||
} |
|||
a = "Internamente, este registro é identificado pelo código" |
|||
b = "para sistemas externos, o código é" |
|||
info = string.format('* %s "%s"; %s "(%s)%s".', a, f001, b, f003, f001) |
|||
table.insert(infos, info) |
table.insert(infos, info) |
||
-- Campo 005 |
-- Campo 005 |
||
local creationDate = |
|||
queryResult = mw.smw.ask('[[' .. target .. ']]|?Creation date#-F[l, d \\d\\e F \\d\\e Y]|headers=hide|mainlabel=-') |
|||
mw.smw.ask("[[" .. target .. "]]|?Creation date#-F[l, d \\d\\e F \\d\\e Y]|headers=hide|mainlabel=-") or "" |
|||
local creationDate = '' |
|||
if type( |
if type(creationDate) == "table" then |
||
for _, row in pairs( |
for _, row in pairs(creationDate) do |
||
for _, data in pairs(row) do |
for _, data in pairs(row) do |
||
creationDate = data |
creationDate = data |
||
Linha 95: | Linha 125: | ||
end |
end |
||
end |
end |
||
local modificationDate = |
|||
mw.smw.ask( |
mw.smw.ask("[[" .. target .. "]]|?Modification date#-F[l, d \\d\\e F \\d\\e Y]|headers=hide|mainlabel=-") |
||
if type(modificationDate) == "table" then |
|||
for _, row in pairs(modificationDate) do |
|||
if type(queryResult) == 'table' then |
|||
for _, row in pairs(queryResult) do |
|||
for _, data in pairs(row) do |
for _, data in pairs(row) do |
||
modificationDate = data |
modificationDate = data |
||
Linha 105: | Linha 134: | ||
end |
end |
||
end |
end |
||
a = |
a = "O registro foi criado em:" |
||
b = |
b = "Sua última transação foi em:" |
||
info = string.format( |
info = string.format("* %s %s. %s %s.", a, creationDate, b, modificationDate) |
||
table.insert(infos, info) |
table.insert(infos, info) |
||
-- Campo 008 |
-- Campo 008 |
||
local invalidCode = '<strong class="error">código inválido para o local de publicação</strong>' |
local invalidCode = '<strong class="error">código inválido para o local de publicação</strong>' |
||
local |
local pubPlaceTbl = { |
||
[ |
["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 = |
local f008pubPlace = |
||
frame:expandTemplate { |
frame:expandTemplate { |
||
title = |
title = "Field data string", |
||
args = { |
args = {"008", "15", "3", property = "Control field data", fullpagename = target} |
||
} |
} |
||
if string.match(f008pubPlace, |
if string.match(f008pubPlace, "^[A-Z]") then |
||
a = |
a = "O uso de maiúsculas não é permitido no campo 008, local de publicação" |
||
info = string.format( |
info = string.format('* <strong class="error">%s.</strong>', a) |
||
table.insert(infos, info) |
table.insert(infos, info) |
||
elseif |
elseif pubPlaceTbl[f008pubPlace] then |
||
a = |
a = "O item possui a seguinte origem:" |
||
info = string.format( |
info = string.format("* %s %s", a, tostring(pubPlaceTbl[f008pubPlace])) |
||
table.insert(infos, info) |
table.insert(infos, info) |
||
else |
else |
||
a = |
a = "O item possui a seguinte origem:" |
||
info = string.format( |
info = string.format("* %s %s", a, f008pubPlace) |
||
table.insert(infos, info) |
table.insert(infos, info) |
||
end |
end |
||
invalidCode = '<strong class="error">código inválido para o idioma (campo 008 ou subcampo $h do campo 041)</strong>' |
invalidCode = '<strong class="error">código inválido para o idioma (campo 008 ou subcampo $h do campo 041)</strong>' |
||
local |
local langTbl = { |
||
[ |
["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 = |
local f008lang = |
||
frame:expandTemplate { |
frame:expandTemplate { |
||
title = |
title = "Field data string", |
||
args = { |
args = {"008", "35", "3", property = "Control field data", fullpagename = target} |
||
} |
} |
||
if string.match(f008lang, |
if string.match(f008lang, "^[A-Z]") then |
||
a = |
a = "O uso de maiúsculas não é permitido no campo 008, idioma" |
||
info = string.format( |
info = string.format('* <strong class="error">%s.</strong>', a) |
||
elseif |
elseif langTbl[f008lang] then |
||
a = |
a = "Majoritariamente, o item se expressa no seguinte idioma:" |
||
info = string.format( |
info = string.format("* %s %s", a, tostring(langTbl[f008lang])) |
||
else |
else |
||
a = |
a = "Majoritariamente, o item se expressa no seguinte idioma:" |
||
info = string.format( |
info = string.format("* %s %s", a, f008lang) |
||
end |
end |
||
-- Se existe o campo 041, mostra '(traduzido do... )' na mesma linha do idioma presente no 008 |
-- Se existe o campo 041, mostra '(traduzido do... )' na mesma linha do idioma presente no 008 |
||
local f041 = |
|||
local f041 = mw.text.trim ( frame:expandTemplate {title = 'Field data string', args = {'041', '0', '0', fullpagename = target}} ) or '' |
|||
mw.text.trim(frame:expandTemplate {title = "Field data string", args = {"041", "0", "0", fullpagename = target}}) or |
|||
if f041 ~= '' then |
|||
"" |
|||
if f041:sub(1, 1) == '1' then |
|||
if f041 ~= "" then |
|||
local f041h = frame:expandTemplate {title = 'Select', args = {'041', 'h', target}} |
|||
if f041:sub(1, 1) == "1" then |
|||
local f041h = frame:expandTemplate {title = "Select", args = {"041", "h", target}} |
|||
info = string.format( '%s (traduzido do %s)', info, f041h ) |
|||
f041h = langTbl[f041h] or f041h |
|||
info = string.format("%s (traduzido do %s)", info, f041h) |
|||
end |
end |
||
end |
end |
||
table.insert(infos, info) |
table.insert(infos, info) |
||
-- Testa se existe(m) ISBN(s) inválido(s) |
-- Testa se existe(m) ISBN(s) inválido(s) |
||
local f020 = |
|||
local f020 = mw.text.trim( frame:expandTemplate {title = 'Field data string', args = {'090', '0', '0', fullpagename = target}} ) or '' |
|||
mw.text.trim(frame:expandTemplate {title = "Field data string", args = {"090", "0", "0", fullpagename = target}}) or |
|||
if f020 ~= '' then |
|||
"" |
|||
local printedIsbn = frame:expandTemplate {title = 'Print ISBN'} or false |
|||
if f020 ~= "" then |
|||
local printedIsbn = frame:expandTemplate {title = "Print ISBN"} or false |
|||
if string.match(printedIsbn, "error") then |
if string.match(printedIsbn, "error") then |
||
a = |
a = "ISBN inválido, por favor, reveja os números informados" |
||
info = string.format( |
info = string.format('* <strong class="error">%s.</strong>', a) |
||
table.insert(infos, info) |
table.insert(infos, info) |
||
end |
end |
||
-- Testa se existe(m) hifen(s) ou x minúsculo no ISBN |
-- Testa se existe(m) hifen(s) ou x minúsculo no ISBN |
||
local f020 = mw.smw.ask("[[" .. target .. "#020]]|?Field data#|headers=hide|mainlabel=-") |
|||
if type( |
if type(f020) == "table" then |
||
for _, row in pairs( |
for _, row in pairs(f020) do |
||
for _, data in pairs(row) do |
for _, data in pairs(row) do |
||
f020 = mw.text.trim(table.concat(data)) |
f020 = mw.text.trim(table.concat(data)) |
||
Linha 233: | Linha 266: | ||
end |
end |
||
end |
end |
||
if string.match(f020, |
if string.match(f020, "-") then |
||
a = 'O ISBN não pode conter hifens. Apenas números e "X" maiúsculo' |
a = 'O ISBN não pode conter hifens. Apenas números e "X" maiúsculo' |
||
info = string.format( |
info = string.format('* <strong class="error">%s.</strong>', a) |
||
table.insert(infos, info) |
table.insert(infos, info) |
||
elseif string.match(f020, |
elseif string.match(f020, "x") then |
||
a = 'O ISBN não pode conter um x minúsculo. Apenas números e "X" maiúsculo' |
a = 'O ISBN não pode conter um x minúsculo. Apenas números e "X" maiúsculo' |
||
info = string.format( |
info = string.format('* <strong class="error">%s.</strong>', a) |
||
table.insert(infos, info) |
table.insert(infos, info) |
||
end |
end |
||
-- Testa se há indicadores no campo 020 |
-- Testa se há indicadores no campo 020 |
||
if f020:sub(1, 1) ~= |
if f020:sub(1, 1) ~= "#" then |
||
a = |
a = "O primeiro indicador do campo 020 foi preenchido, porém, ele não deve ser preenchido" |
||
info = string.format( |
info = string.format('* <strong class="error">.</strong>', a) |
||
table.insert(infos, info) |
table.insert(infos, info) |
||
end |
end |
||
if f020:sub(2, 2) ~= |
if f020:sub(2, 2) ~= "#" then |
||
a = |
a = "O segundo indicador do campo 020 foi preenchido, porém, ele não deve ser preenchido" |
||
info = string.format( |
info = string.format('* <strong class="error">%s.</strong>', a) |
||
table.insert(infos, info) |
table.insert(infos, info) |
||
end |
end |
||
end |
end |
||
-- Testa o uso de maiúsculas no campo 041 |
-- Testa o uso de maiúsculas no campo 041 |
||
if f041 ~= |
if f041 ~= "" then |
||
if f041:sub(1, 1) == |
if f041:sub(1, 1) == "#" then |
||
a = |
a = "Talvez o primeiro indicador do campo 041 tenha sido esquecido" |
||
info = string.format( |
info = string.format('* <strong class="error">%s.</strong>', a) |
||
table.insert(infos, info) |
table.insert(infos, info) |
||
end |
end |
||
local f041a = frame:expandTemplate {title = |
local f041a = frame:expandTemplate {title = "Select", args = {"041", "a", target}} or false |
||
if string.match(f041a, |
if string.match(f041a, "^[A-Z]") then |
||
a = |
a = "O uso de maiúsculas não é permitido nos códigos de idioma (campo 041)" |
||
info = string.format( |
info = string.format('* <strong class="error">%s.</strong>', a) |
||
table.insert(infos, info) |
table.insert(infos, info) |
||
end |
end |
||
Linha 273: | Linha 306: | ||
local accessPointPresence = |
local accessPointPresence = |
||
frame:callParserFunction { |
frame:callParserFunction { |
||
name = |
name = "#ask:[[" .. target .. "#100||" .. target .. "#110||" .. target .. "#111||" .. target .. "#130]]", |
||
args = { |
args = {"?Field data", format = "count", mainlabel = "-"} |
||
} or 0 |
} or 0 |
||
accessPointPresence = tonumber( |
accessPointPresence = tonumber(accessPointPresence) |
||
-- Testa se há subcampo $b e se há espaço no subcampo $c do campo 090 |
-- Testa se há subcampo $b e se há espaço no subcampo $c do campo 090 |
||
local f090 = |
|||
local f090 = mw.text.trim( frame:expandTemplate {title = 'Field data string', args = {'090', '0', '0', fullpagename = target}} ) or '' |
|||
mw.text.trim(frame:expandTemplate {title = "Field data string", args = {"090", "0", "0", fullpagename = target}}) or |
|||
if f090 ~= '' then |
|||
"" |
|||
local f090b = frame:expandTemplate {title = 'Select', args = {'090', 'b', target}} or '' |
|||
if f090 ~= "" then |
|||
local f090b = frame:expandTemplate {title = "Select", args = {"090", "b", target}} or "" |
|||
a = 'Está faltando o subcampo $b do campo 090 (notação de Cutter)' |
|||
if f090b == "" then |
|||
info = string.format( '* <strong class="error">%s.</strong>', a ) |
|||
a = "Está faltando o subcampo $b do campo 090 (notação de Cutter)" |
|||
info = string.format('* <strong class="error">%s.</strong>', a) |
|||
table.insert(infos, info) |
table.insert(infos, info) |
||
end |
end |
||
-- Testa se não foi esquecida a letra do tíulo na notação de Cutter, caso haja um ponto de acesso 1XX |
-- 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(f090b, |
if accessPointPresence >= 1 and string.match(f090b, "[0-9]$") then |
||
a = |
a = "Falta a letra do título na notação de Cutter" |
||
info = string.format( |
info = string.format('* <strong class="error">%s.</strong>', a) |
||
table.insert(infos, info) |
table.insert(infos, info) |
||
end |
end |
||
local f090c = frame:expandTemplate {title = |
local f090c = frame:expandTemplate {title = "Select", args = {"090", "c", target}} or "" |
||
if string.match(f090c, |
if string.match(f090c, "%sed") then |
||
a = |
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 = string.format( |
info = string.format('* <strong class="error">%s.</strong>', a) |
||
table.insert(infos, info) |
table.insert(infos, info) |
||
end |
end |
||
end |
end |
||
-- Testa (conta) se existe mais de um ponto de acesso principal |
-- Testa (conta) se existe mais de um ponto de acesso principal |
||
local f100existance = frame:expandTemplate {title = |
local f100existance = frame:expandTemplate {title = "Exist", args = {"100", target}} |
||
if accessPointPresence > 1 or f100existance == |
if accessPointPresence > 1 or f100existance == "multiple" then |
||
a = |
a = "Foi registrado <b>mais de um ponto de acesso principal</b>. Isso não é permitido" |
||
info = string.format( |
info = string.format('* <strong class="error">%s.</strong>', a) |
||
table.insert(infos, info) |
table.insert(infos, info) |
||
end |
end |
||
if f100existance ~= |
if f100existance ~= "" then |
||
local f100 = |
|||
local f100 = mw.text.trim( frame:expandTemplate {title = 'Field data string', args = {'100', '0', '0', fullpagename = target}} ) or '' |
|||
mw.text.trim( |
|||
info = 'O ponto de acesso principal foi dado a uma <b>pessoa</b>' |
|||
frame:expandTemplate {title = "Field data string", args = {"100", "0", "0", fullpagename = target}} |
|||
if f100:sub(1, 1) == '0' then |
|||
) or "" |
|||
a = 'e a entrada começa pelo seu <b>primeiro nome</b>' |
|||
info = "O ponto de acesso principal foi dado a uma <b>pessoa</b>" |
|||
if f100:sub(1, 1) == "0" then |
|||
a = "e a entrada começa pelo seu <b>primeiro nome</b>" |
|||
info = string.format("* %s %s.", info, a) |
|||
table.insert(infos, info) |
table.insert(infos, info) |
||
elseif f100:sub(1, 1) == |
elseif f100:sub(1, 1) == "1" then |
||
a = |
a = "e a entrada começa pelo seu <b>sobrenome</b>" |
||
info = string.format( |
info = string.format("* %s %s.", info, a) |
||
table.insert(infos, info) |
table.insert(infos, info) |
||
elseif f100:sub(1, 1) == |
elseif f100:sub(1, 1) == "3" then |
||
a = |
a = "e a entrada começa pelo seu <b>nome de família</b>" |
||
info = string.format( |
info = string.format("* %s %s.", info, a) |
||
table.insert(infos, info) |
table.insert(infos, info) |
||
elseif f100:sub(1, 1) == |
elseif f100:sub(1, 1) == "#" then |
||
a = |
a = "o primeiro indicador não foi preenchido" |
||
info = string.format( |
info = string.format('* %s, porém, <strong class="error">%s.</strong>', info, a) |
||
table.insert(infos, info) |
table.insert(infos, info) |
||
else |
else |
||
a = "o primeiro indicador foi preenchido incorretamente" |
|||
info = string.format('* %s, porém, <strong class="error">%s.</strong>', info, a) |
|||
table.insert(infos, info) |
|||
end |
end |
||
if f100:sub(2, 2) ~= |
if f100:sub(2, 2) ~= "#" then |
||
a = |
a = "O segundo indicador do campo 100 foi preenchido, porém, ele não deve ser preenchido" |
||
info = string.format( |
info = string.format('* <strong class="error">%s.</strong>', a) |
||
table.insert(infos, info) |
table.insert(infos, info) |
||
end |
end |
||
-- Testa se existe ', ' no subcampo $a (Nome, Sobrenome) |
-- Testa se existe ', ' no subcampo $a (Nome, Sobrenome) |
||
local f100a = frame:expandTemplate {title = |
local f100a = frame:expandTemplate {title = "Select", args = {"100", "a", target}} |
||
if f100a ~= |
if f100a ~= "" then |
||
if not string.match(f100a, |
if not string.match(f100a, ".-,.") then |
||
a = |
a = "Em pontos de acesso, o nome pessoal deve ser invertido (Nome, Sobrenome). Verifique o campo 100" |
||
info = string.format( |
info = string.format('* <strong class="error">%s.</strong>', a) |
||
table.insert(infos, info) |
table.insert(infos, info) |
||
end |
end |
||
if string.match(f100a, |
if string.match(f100a, "[a-zÀ-ü],[A-ZÀ-ü]") then |
||
a = |
a = "Falta espaço após a vírgula. Verifique o campo 100" |
||
info = string.format( |
info = string.format('* <strong class="error">%s.</strong>', a) |
||
table.insert(infos, info) |
table.insert(infos, info) |
||
end |
end |
||
end |
end |
||
local f100q = frame:expandTemplate {title = |
local f100q = frame:expandTemplate {title = "Select", args = {"100", "q", target}} |
||
if f100q ~= |
if f100q ~= "" then |
||
if not string.match(f100q, |
if not string.match(f100q, "^%(") then |
||
a = |
a = "O subcampo $q do campo 100 necessita parênteses" |
||
info = string.format( |
info = string.format('* <strong class="error">%s.</strong>', a) |
||
table.insert(infos, info) |
table.insert(infos, info) |
||
end |
end |
||
end |
end |
||
local f100d = frame:expandTemplate {title = |
local f100d = frame:expandTemplate {title = "Select", args = {"100", "d", target}} |
||
if f100d ~= |
if f100d ~= "" then |
||
if string.match(f100, |
if string.match(f100, "%$d %d%d%d%d$") then |
||
a = |
a = "O subcampo $d do campo 100 necessita hífen" |
||
info = string.format( |
info = string.format('* <strong class="error">%s.</strong>', a) |
||
table.insert(infos, info) |
table.insert(infos, info) |
||
end |
end |
||
end |
end |
||
end |
end |
||
-- |
-- Testa se existe um ponto de acesso principal 110 |
||
local f110 = |
|||
local f110 = mw.text.trim( frame:expandTemplate {title = 'Field data string', args = {'110', '0', '0', fullpagename = target}} or '' ) |
|||
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 |
|||
if f110 ~= "" then |
|||
a = 'e a entrada começa por um <b>nome invertido</b>' |
|||
info = "O ponto de acesso principal foi dado a uma <b>entidade coletiva</b>" |
|||
if f110:sub(1, 1) == "0" then |
|||
a = "e a entrada começa por um <b>nome invertido</b>" |
|||
info = string.format("* %s %s.", info, a) |
|||
table.insert(infos, info) |
table.insert(infos, info) |
||
elseif f110:sub(1, 1) == |
elseif f110:sub(1, 1) == "1" then |
||
a = |
a = "e a entrada começa por um <b>nome de jurisdição</b>" |
||
info = string.format( |
info = string.format("* %s %s.", info, a) |
||
table.insert(infos, info) |
table.insert(infos, info) |
||
elseif f110:sub(1, 1) == |
elseif f110:sub(1, 1) == "2" then |
||
a = |
a = "e a entrada começa por um <b>nome em ordem direta</b>" |
||
info = string.format( |
info = string.format("* %s %s.", info, a) |
||
table.insert(infos, info) |
table.insert(infos, info) |
||
elseif f110:sub(1, 1) == |
elseif f110:sub(1, 1) == "#" then |
||
a = |
a = "o primeiro indicador não foi preenchido" |
||
info = string.format( |
info = string.format('* %s, porém, <strong class="error">%s.</strong>', info, a) |
||
table.insert(infos, info) |
table.insert(infos, info) |
||
else |
else |
||
a = "o primeiro indicador foi preenchido incorretamente" |
|||
info = string.format('* %s, porém, <strong class="error">%s.</strong>', info, a) |
|||
table.insert(infos, info) |
|||
end |
end |
||
if f110:sub(2, 2) ~= |
if f110:sub(2, 2) ~= "#" then |
||
a = |
a = "O segundo indicador do campo 110 foi preenchido, porém, ele não deve ser preenchido" |
||
info = string.format( |
info = string.format('* <strong class="error">%s.</strong>', a) |
||
table.insert(infos, info) |
table.insert(infos, info) |
||
end |
end |
||
end |
end |
||
-- |
-- Testa se existe um ponto de acesso principal 111 |
||
local f111 = |
|||
local f111 = mw.text.trim( frame:expandTemplate {title = 'Field data string', args = {'111', '0', '0', fullpagename = target}} ) or '' |
|||
mw.text.trim(frame:expandTemplate {title = "Field data string", args = {"111", "0", "0", fullpagename = target}}) or |
|||
if f111 ~= '' then |
|||
"" |
|||
info = 'O ponto de acesso principal foi dado a um <b>evento</b>' |
|||
if f111 ~= "" then |
|||
info = "O ponto de acesso principal foi dado a um <b>evento</b>" |
|||
if f111:sub(1, 1) == "0" then |
|||
info = string.format ( '* %s %s.' , info, a ) |
|||
a = "e a entrada começa por um <b>nome invertido</b>" |
|||
info = string.format("* %s %s.", info, a) |
|||
table.insert(infos, info) |
table.insert(infos, info) |
||
elseif f111:sub(1, 1) == |
elseif f111:sub(1, 1) == "1" then |
||
a = |
a = "e a entrada começa por um <b>nome de jurisdição</b>" |
||
info = string.format |
info = string.format("* %s %s.", info, a) |
||
table.insert(infos, info) |
table.insert(infos, info) |
||
elseif f111:sub(1, 1) == |
elseif f111:sub(1, 1) == "2" then |
||
a = |
a = "e a entrada começa por um <b>nome em ordem direta</b>" |
||
info = string.format |
info = string.format("* %s %s.", info, a) |
||
table.insert(infos, info) |
table.insert(infos, info) |
||
elseif f111:sub(1, 1) == |
elseif f111:sub(1, 1) == "#" then |
||
a = |
a = "o primeiro indicador não foi preenchido" |
||
info = string.format |
info = string.format('* %s, porém, <strong class="error">%s.</strong>', info, a) |
||
table.insert(infos, info) |
table.insert(infos, info) |
||
else |
else |
||
a = "o primeiro indicador foi preenchido incorretamente" |
|||
info = string.format('* %s, porém, <strong class="error">%s.</strong>', info, a) |
|||
table.insert(infos, info) |
|||
end |
end |
||
if f111:sub(2, 2) ~= |
if f111:sub(2, 2) ~= "#" then |
||
a = |
a = "O segundo indicador do campo 111 foi preenchido, porém, ele não deve ser preenchido" |
||
info = string.format( |
info = string.format('* <strong class="error">%s.</strong>', a) |
||
table.insert(infos, info) |
table.insert(infos, info) |
||
end |
end |
||
end |
end |
||
-- |
-- Testa se existe um ponto de acesso principal 130 |
||
local f130 = |
|||
local f130 = mw.text.trim( frame:expandTemplate {title = 'Field data string', args = {'130', '0', '0', fullpagename = target}} ) or '' |
|||
mw.text.trim(frame:expandTemplate {title = "Field data string", args = {"130", "0", "0", fullpagename = target}}) or |
|||
if f130 ~= '' then |
|||
"" |
|||
info = 'O ponto de acesso principal foi dado a um <b>título uniforme</b>' |
|||
if f130 ~= "" then |
|||
info = "O ponto de acesso principal foi dado a um <b>título uniforme</b>" |
|||
a = 'o primeiro indicador não foi preenchido' |
|||
if f130:sub(1, 1) == "#" then |
|||
info = string.format( '* %s, porém, <strong class="error">%s.</strong>', info, a ) |
|||
a = "o primeiro indicador não foi preenchido" |
|||
info = string.format('* %s, porém, <strong class="error">%s.</strong>', info, a) |
|||
table.insert(infos, info) |
table.insert(infos, info) |
||
else |
else |
||
local f130a = frame:expandTemplate {title = |
local f130a = frame:expandTemplate {title = "Select", args = {"130", "a", target}} |
||
a = ucfirst( |
a = ucfirst(f130a:sub(f130:sub(1, 1))) |
||
info = string.format( |
info = string.format('* %s, ele será alfabetado como "<b>%s</b>".', info, a) |
||
table.insert(infos, info) |
table.insert(infos, info) |
||
end |
end |
||
if f130:sub(2, 2) ~= |
if f130:sub(2, 2) ~= "#" then |
||
a = |
a = "O segundo indicador do campo 130 foi preenchido, porém, ele não deve ser preenchido" |
||
info = string.format( |
info = string.format('* <strong class="error">%s.</strong>', a) |
||
table.insert(infos, info) |
table.insert(infos, info) |
||
end |
end |
||
end |
end |
||
-- |
-- Testa se existe um ponto de acesso principal. Se existir, testa se o primeiro indicador do campo 245 condiz com essa realidade |
||
local f245ind1 = f245:sub(1, 1) or |
local f245ind1 = f245:sub(1, 1) or "" |
||
if accessPointPresence == 0 then |
if accessPointPresence == 0 then |
||
if f245ind1 == |
if f245ind1 == "1" then |
||
a = |
|||
a = 'Não houve um ponto de acesso principal nos campos 1XX, desse modo, o primeiro indicador do campo 245 deve ter o valor "0"' |
|||
'Não houve um ponto de acesso principal nos campos 1XX, desse modo, o primeiro indicador do campo 245 deve ter o valor "0"' |
|||
info = string.format( '* <strong class="error">%s.</strong>', a ) |
|||
info = string.format('* <strong class="error">%s.</strong>', a) |
|||
table.insert(infos, info) |
table.insert(infos, info) |
||
end |
end |
||
else |
else |
||
if f245ind1 == |
if f245ind1 == "0" then |
||
a = |
|||
a = 'Houve um ponto de acesso principal nos campos 1XX, desse modo, o primeiro indicador do campo 245 deve ter o valor "1"' |
|||
'Houve um ponto de acesso principal nos campos 1XX, desse modo, o primeiro indicador do campo 245 deve ter o valor "1"' |
|||
info = string.format( '* <strong class="error">%s.</strong>', a ) |
|||
info = string.format('* <strong class="error">%s.</strong>', a) |
|||
table.insert(infos, info) |
table.insert(infos, info) |
||
end |
end |
||
end |
end |
||
-- |
-- 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 f240 = |
|||
local f240 = mw.text.trim( frame:expandTemplate {title = 'Field data string', args = {'240', '0', '0', fullpagename = target}} ) or '' |
|||
mw.text.trim(frame:expandTemplate {title = "Field data string", args = {"240", "0", "0", fullpagename = target}}) or |
|||
if f240 ~= '' then |
|||
"" |
|||
if f240 ~= "" then |
|||
a = 'Normalmente, quando há um campo 240, deve haver um campo 041' |
|||
if f041 == "" then |
|||
info = string.format( '* <strong class="error">%s.</strong>' , a ) |
|||
a = "Normalmente, quando há um campo 240, deve haver um campo 041" |
|||
info = string.format('* <strong class="error">%s.</strong>', a) |
|||
table.insert(infos, info) |
table.insert(infos, info) |
||
end |
end |
||
local f240l = frame:expandTemplate {title = |
local f240l = frame:expandTemplate {title = "Select", args = {"240", "l", target}} or "" |
||
if f240l ~= |
if f240l ~= "" then |
||
if string.match(f240l, |
if string.match(f240l, "^[a-zA-Z][a-zA-Z][a-zA-Z]$") then |
||
a = |
a = "É necessário informar o idioma por extenso ($l do campo 240) antecedido por um ponto no subcampo $a" |
||
info = string.format( |
info = string.format('* <strong class="error">%s.</strong>', a) |
||
table.insert(infos, info) |
table.insert(infos, info) |
||
end |
end |
||
if not string.match(f240, |
if not string.match(f240, "%.%s?%$l") then |
||
a = |
a = "O subcampo $l do campo 240 necessita ser antecedido por um ponto no subcampo anterior" |
||
info = string.format |
info = string.format('* <strong class="error">%s.</strong>', a) |
||
table.insert(infos, info) |
table.insert(infos, info) |
||
end |
end |
||
else |
else |
||
a = |
a = "Normalmente, quando há um campo 240 $a, deve haver também um 240 $l. 240 $l não foi detectado" |
||
info = string.format |
info = string.format('* <strong class="error">%s.</strong>', a) |
||
table.insert(infos, info) |
table.insert(infos, info) |
||
end |
end |
||
if f240:sub(1, 1) == |
if f240:sub(1, 1) == "0" then |
||
a = |
a = "O título uniforme não será exibido" |
||
info = string.format( |
info = string.format("* %s.", a) |
||
table.insert(infos, info) |
table.insert(infos, info) |
||
elseif f240:sub(1, 1) == |
elseif f240:sub(1, 1) == "1" then |
||
a = |
a = "O título uniforme será exibido" |
||
info = string.format( |
info = string.format("* %s.", a) |
||
table.insert(infos, info) |
table.insert(infos, info) |
||
elseif f240:sub(1, 1) == |
elseif f240:sub(1, 1) == "#" then |
||
a = |
a = "Está faltando o primeiro indicador do campo 240" |
||
info = string.format( |
info = string.format('* <strong class="error">%s.</strong>', a) |
||
table.insert(infos, info) |
table.insert(infos, info) |
||
else |
else |
||
a = |
a = "O primeiro indicador do campo 240 foi preenchido incorretamente" |
||
info = string.format( |
info = string.format('* <strong class="error">%s.</strong>', a) |
||
table.insert(infos, info) |
table.insert(infos, info) |
||
end |
end |
||
if f240:sub(2, 2) == |
if f240:sub(2, 2) == "#" then |
||
a = |
a = "Está faltando o segundo indicador do campo 240" |
||
info = string.format( |
info = string.format('* <strong class="error">%s.</strong>', a) |
||
table.insert(infos, info) |
table.insert(infos, info) |
||
else |
else |
||
local f240a = |
|||
local f240a = string.gsub( mw.text.trim ( frame:expandTemplate {title = 'Select', args = {'240', 'a', target}} ), '[/:=.]$', '' ) |
|||
string.gsub(mw.text.trim(frame:expandTemplate {title = "Select", args = {"240", "a", target}}), "[/:=.]$", "") |
|||
a = 'O título uniforme será alfabetado como' |
|||
a = "O título uniforme será alfabetado como" |
|||
b = ucfirst(f240a:sub(f240:sub(2, 2) + 1)) |
|||
info = string.format('* %s "<b>%s</b>".', a, b) |
|||
table.insert(infos, info) |
table.insert(infos, info) |
||
end |
end |
||
end |
end |
||
-- |
-- Informa se o título receberá o ponto de acesso principal ou secundário |
||
if f245ind1 == |
if f245ind1 == "0" then |
||
a = |
a = "O título recebeu o <b>ponto de acesso principal</b>" |
||
info = string.format( |
info = string.format("* %s.", a) |
||
table.insert(infos, info) |
table.insert(infos, info) |
||
elseif f245ind1 == |
elseif f245ind1 == "1" then |
||
a = |
a = "O título recebeu um <b>ponto de acesso secundário</b>" |
||
info = string.format( |
info = string.format('* <strong class="error">%s.</strong>', a) |
||
table.insert(infos, info) |
table.insert(infos, info) |
||
elseif f245ind1 == |
elseif f245ind1 == "#" then |
||
a = |
a = "Está faltando o primeiro indicador do campo 245" |
||
info = string.format( |
info = string.format('* <strong class="error">%s.</strong>', a) |
||
table.insert(infos, info) |
table.insert(infos, info) |
||
else |
else |
||
a = |
a = "O primeiro indicador do campo 245 foi preenchido incorretamente" |
||
info = string.format( |
info = string.format('* <strong class="error">%s.</strong>', a) |
||
table.insert(infos, info) |
table.insert(infos, info) |
||
end |
end |
||
-- |
-- 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 = |
local f245a = frame:expandTemplate {title = "Select", args = {"245", "a", target}} |
||
if f245:sub(2, 2) == |
if f245:sub(2, 2) == "#" then |
||
a = |
a = "Está faltando o segundo indicador do campo 245" |
||
info = string.format( |
info = string.format('* <strong class="error">%s.</strong>', a) |
||
table.insert(infos, info) |
table.insert(infos, info) |
||
else |
else |
||
a = |
a = "O título será alfabetado como" |
||
b = ucfirst( |
b = ucfirst(f245a:sub(f245:sub(2, 2) + 1)) |
||
b = string.gsub( |
b = string.gsub(b, "%s?[/:=.]$", "") |
||
info = string.format( |
info = string.format('* %s "<b>%s</b>".', a, b) |
||
table.insert(infos, info) |
table.insert(infos, info) |
||
end |
end |
||
-- |
-- Testa se existe espaço antes da pontuação "/", ":" e "=" no final do subcampo $a e $b |
||
if string.match( |
if string.match(f245a, "[a-zA-Z][/:=]$") then |
||
a = |
a = "Inclua um espaço antes da pontuação (ao final do subcampo $a do campo 245)" |
||
info = string.format( |
info = string.format('* <strong class="error">%s.</strong>', a) |
||
table.insert(infos, info) |
table.insert(infos, info) |
||
end |
end |
||
-- |
-- Testa se o subcampo $b começa com letras maiúsculas |
||
local f245b = frame:expandTemplate {title = |
local f245b = frame:expandTemplate {title = "Select", args = {"245", "b", target}} or "" |
||
if f245b ~= |
if f245b ~= "" then |
||
if string.match( |
if string.match(f245b, "[a-zA-Z][/:=]$") then |
||
a = |
a = "Inclua um espaço antes da pontuação (ao final do subcampo $b do campo 245" |
||
info = string.format( |
info = string.format('* <strong class="error">%s.</strong>', a) |
||
table.insert(infos, info) |
table.insert(infos, info) |
||
end |
end |
||
if string.match( |
if string.match(f245b, "^[A-Z]") then |
||
a = |
a = "Normalmente, o início de um subtítulo (245 $b) começa com letras minúsculas" |
||
info = string.format( |
info = string.format('* <strong class="error">%s.</strong>', a) |
||
table.insert(infos, info) |
table.insert(infos, info) |
||
end |
end |
||
-- Testa se existe mais de um subcampo $b no 245 |
-- Testa se existe mais de um subcampo $b no 245 |
||
if string.match( |
if string.match(f245, "%$b.*%$b") then |
||
a = |
a = "Há mais de um subcampo $b no campo 245. O subcampo $b não é repetível" |
||
info = string.format( |
info = string.format('* <strong class="error">%s.</strong>', a) |
||
table.insert(infos, info) |
table.insert(infos, info) |
||
end |
end |
||
end |
end |
||
-- |
-- Testa se o subcampo $c está presente |
||
local f245c = frame:expandTemplate {title = |
local f245c = frame:expandTemplate {title = "Select", args = {"245", "c", target}} or "" |
||
if f245c ~= |
if f245c ~= "" then |
||
-- Testa se existe espaço antes do ponto e vírgula na indicação de responsabilidade, subcampo $c do 245 |
-- Testa se existe espaço antes do ponto e vírgula na indicação de responsabilidade, subcampo $c do 245 |
||
if string.match( |
if string.match(f245c, "[a-zA-Z.];") then |
||
a = |
a = "Inclua um espaço antes do ponto e vírgula (subcampo $c do campo 245)" |
||
info = string.format( |
info = string.format('* <strong class="error">%s.</strong>', a) |
||
table.insert(infos, info) |
table.insert(infos, info) |
||
end |
end |
||
-- Testa se existe "/" antes do subcampo $c do campo 245 |
-- Testa se existe "/" antes do subcampo $c do campo 245 |
||
if string.match( |
if string.match(f245, "[a-zA-Z]%s?%$c") then |
||
a = 'É necessária a pontuação que precede a indicação de responsabilidade (" / ") no campo 245' |
a = 'É necessária a pontuação que precede a indicação de responsabilidade (" / ") no campo 245' |
||
info = string.format( |
info = string.format('* <strong class="error">%s.</strong>', a) |
||
table.insert(infos, info) |
table.insert(infos, info) |
||
end |
end |
||
-- Testa se há ": $c" |
-- Testa se há ": $c" |
||
if string.match( |
if string.match(f245, ":%s?%$c") then |
||
a = |
|||
a = 'Ou o subtítulo foi colocado no subcampo $c, ou a pontuação que precede a indicação de responsabilidade (" / ") não foi informada corretamente (campo 245).' |
|||
'Ou o subtítulo foi colocado no subcampo $c, ou a pontuação que precede a indicação de responsabilidade (" / ") não foi informada corretamente (campo 245).' |
|||
info = string.format( '* <strong class="error">%s.</strong>', a ) |
|||
info = string.format('* <strong class="error">%s.</strong>', a) |
|||
table.insert(infos, info) |
table.insert(infos, info) |
||
end |
end |
||
-- Testa se o subcampo $c termina em "-" |
-- Testa se o subcampo $c termina em "-" |
||
if string.match( |
if string.match(f245, "%-$") then |
||
a = |
a = "Nunca inclua hifens de separação de áreas do AACR2 em registros MARC 21. Reveja a pontuação (campo 245)" |
||
info = string.format( |
info = string.format('* <strong class="error">%s.</strong>', a) |
||
table.insert(infos, info) |
table.insert(infos, info) |
||
end |
end |
||
-- Testa se existe mais de um subcampo $c no 245 |
-- Testa se existe mais de um subcampo $c no 245 |
||
if string.match( |
if string.match(f245, "%$c.*%$c") then |
||
a = |
a = "Há mais de um subcampo $c no campo 245. O subcampo $c não é repetível" |
||
info = string.format( |
info = string.format('* <strong class="error">%s.</strong>', a) |
||
table.insert(infos, info) |
table.insert(infos, info) |
||
end |
end |
||
-- Testa se existe mais de 3 vírgulas no campo 245 $c |
-- Testa se existe mais de 3 vírgulas no campo 245 $c |
||
if string.match( |
if string.match(f245c, "[A-Za-zÀ-ü ]+,[A-Za-zÀ-ü ]+,[A-Za-zÀ-ü ]+,") then |
||
a = 'Parece haver mais de 3 pessoas na indicação de responsabilidade (245 $c), use " ... [et al.]"' |
a = 'Parece haver mais de 3 pessoas na indicação de responsabilidade (245 $c), use " ... [et al.]"' |
||
info = string.format( |
info = string.format('* <strong class="error">%s.</strong>', a) |
||
table.insert(infos, info) |
table.insert(infos, info) |
||
end |
end |
||
-- Testa se existe a sintaxe "*...[et. " |
-- Testa se existe a sintaxe "*...[et. " |
||
if string.match( |
if string.match(f245c, "[a-zA-ZÀ-ü]%.%.%.%[et.?%s") then |
||
a = 'No campo 245, o espaçamento correto é " ... [et al.]"' |
a = 'No campo 245, o espaçamento correto é " ... [et al.]"' |
||
info = string.format( |
info = string.format('* <strong class="error">%s.</strong>', a) |
||
table.insert(infos, info) |
table.insert(infos, info) |
||
end |
end |
||
else |
else |
||
a = |
a = "Está faltando o subcampo $c do campo 245" |
||
info = string.format( |
info = string.format('* <strong class="error">%s.</strong>', a) |
||
table.insert(infos, info) |
table.insert(infos, info) |
||
end |
end |
||
-- Testa se existe espaço antes de "ed." (subcampo $a do 250) |
-- Testa se existe espaço antes de "ed." (subcampo $a do 250) |
||
local f250 = |
|||
local f250 = mw.text.trim( frame:expandTemplate {title = 'Field data string', args = {'250', '0', '0', fullpagename = target}} ) or '' |
|||
mw.text.trim(frame:expandTemplate {title = "Field data string", args = {"250", "0", "0", fullpagename = target}}) or |
|||
if f250 ~= '' then |
|||
"" |
|||
local f250a = frame:expandTemplate {title = 'Select', args = {'250', 'a', target}} or '' |
|||
if f250 ~= "" then |
|||
local f250a = frame:expandTemplate {title = "Select", args = {"250", "a", target}} or "" |
|||
if string.match(f250a, "%d%.?ed%.") then |
|||
a = 'Inclua um espaço antes da indicação "ed." (subcampo $a do campo 250)' |
a = 'Inclua um espaço antes da indicação "ed." (subcampo $a do campo 250)' |
||
info = string.format( |
info = string.format('* <strong class="error">%s.</strong>', a) |
||
table.insert(infos, info) |
table.insert(infos, info) |
||
end |
end |
||
end |
end |
||
-- Testa se existe 260, se existir, verifica a pontuação final dos subcampos $a, $b e $c do campo 260 |
-- Testa se existe 260, se existir, verifica a pontuação final dos subcampos $a, $b e $c do campo 260 |
||
local f260 = |
|||
local f260 = mw.text.trim( frame:expandTemplate {title = 'Field data string', args = {'260', '0', '0', fullpagename = target}} ) or '' |
|||
mw.text.trim(frame:expandTemplate {title = "Field data string", args = {"260", "0", "0", fullpagename = target}}) or |
|||
if f260 ~= '' then |
|||
"" |
|||
local f260a = frame:expandTemplate {title = 'Select', args = {'260', 'a', target}} or '' |
|||
if f260 ~= "" then |
|||
local f260a = frame:expandTemplate {title = "Select", args = {"260", "a", target}} or "" |
|||
if string.match( f260a, '[a-zA-ZÀ-ü%],]%s?$' ) then |
|||
if f260a ~= "" then |
|||
if string.match(f260a, "[a-zA-ZÀ-ü%],]%s?$") then |
|||
a = 'Normalmente, o final do subcampo $a do campo 260 requer a seguinte pontuação " : "' |
a = 'Normalmente, o final do subcampo $a do campo 260 requer a seguinte pontuação " : "' |
||
info = string.format( |
info = string.format('* <strong class="error">%s.</strong>', a) |
||
table.insert(infos, info) |
table.insert(infos, info) |
||
end |
end |
||
else |
else |
||
a = |
a = "Está faltando o subcampo $a do campo 260" |
||
info = string.format( |
info = string.format('* <strong class="error">%s.</strong>', a) |
||
table.insert(infos, info) |
table.insert(infos, info) |
||
end |
end |
||
local f260b = frame:expandTemplate {title = |
local f260b = frame:expandTemplate {title = "Select", args = {"260", "b", target}} or "" |
||
if f260b ~= |
if f260b ~= "" then |
||
if string.match( |
if string.match(f260b, "[a-zA-Z.]$") then |
||
a = |
|||
a = 'Normalmente, o final do subcampo $b do campo 260 requer uma das seguintes pontuações ", " ou " : ". Reveja a pontuação' |
|||
'Normalmente, o final do subcampo $b do campo 260 requer uma das seguintes pontuações ", " ou " : ". Reveja a pontuação' |
|||
info = string.format( '* <strong class="error">%s.</strong>', a ) |
|||
info = string.format('* <strong class="error">%s.</strong>', a) |
|||
table.insert(infos, info) |
table.insert(infos, info) |
||
end |
end |
||
else |
else |
||
a = |
a = "Está faltando o subcampo $b do campo 260" |
||
info = string.format( |
info = string.format('* <strong class="error">%s.</strong>', a) |
||
table.insert(infos, info) |
table.insert(infos, info) |
||
end |
end |
||
local f260c = frame:expandTemplate {title = |
local f260c = frame:expandTemplate {title = "Select", args = {"260", "c", target}} or "" |
||
if f260c ~= |
if f260c ~= "" then |
||
-- Testa se o subcampo $c é precedido ou não por "," |
-- Testa se o subcampo $c é precedido ou não por "," |
||
if string.match( |
if string.match(f260, "[a-zA-ZÀ-ü%]][;:]%s?%$c") then |
||
a = |
a = "O ano de publicação deve sempre ser precedido de uma vírgula. Reveja a pontuação (campo 260)" |
||
info = string.format( |
info = string.format('* <strong class="error">%s.</strong>', a) |
||
table.insert(infos, info) |
table.insert(infos, info) |
||
end |
end |
||
if string.match( |
if string.match(f260c, "[a-zA-ZÀ-ü0-9%]]$") then |
||
a = |
a = "Nossa política de catalogação define que o subcampo $c do campo 260 deve terminar com um ponto" |
||
info = string.format( |
info = string.format('* <strong class="error">%s.</strong>', a) |
||
table.insert(infos, info) |
table.insert(infos, info) |
||
end |
end |
||
else |
else |
||
a = |
a = "Está faltando o subcampo $c do campo 260" |
||
info = string.format( |
info = string.format('* <strong class="error">%s.</strong>', a) |
||
table.insert(infos, info) |
table.insert(infos, info) |
||
end |
end |
||
end |
end |
||
-- Testa se existe espaço entre o número e a indicaçação de extensão do texto |
-- Testa se existe espaço entre o número e a indicaçação de extensão do texto |
||
local f300 = |
|||
local f300 = mw.text.trim( frame:expandTemplate {title = 'Field data string', args = {'300', '0', '0', fullpagename = target}} ) or '' |
|||
mw.text.trim(frame:expandTemplate {title = "Field data string", args = {"300", "0", "0", fullpagename = target}}) or |
|||
if f300 ~= '' then |
|||
"" |
|||
local f300a = frame:expandTemplate {title = 'Select', args = {'300', 'a', target}} or '' |
|||
if f300 ~= "" then |
|||
local f300a = frame:expandTemplate {title = "Select", args = {"300", "a", target}} or "" |
|||
if string.match( f300a, '%d[a-z]%.' ) then |
|||
if f300a ~= "" then |
|||
if string.match(f300a, "%d[a-z]%.") then |
|||
a = 'Inclua um espaço entre o número e a indicação "p.", "f." ou "v." (subcampo $a do campo 300)' |
a = 'Inclua um espaço entre o número e a indicação "p.", "f." ou "v." (subcampo $a do campo 300)' |
||
info = string.format( |
info = string.format('* <strong class="error">%s.</strong>', a) |
||
table.insert(infos, info) |
table.insert(infos, info) |
||
end |
end |
||
-- Testa se existe espaço entre "p." e ";" |
-- Testa se existe espaço entre "p." e ";" |
||
if string.match( |
if string.match(f300a, "%.[:;]") then |
||
a = 'Inclua um espaço entre a indicação "p.", "f." ou "v." e a pontuação final (subcampo $a do campo 300)' |
a = 'Inclua um espaço entre a indicação "p.", "f." ou "v." e a pontuação final (subcampo $a do campo 300)' |
||
info = string.format( |
info = string.format('* <strong class="error">%s.</strong>', a) |
||
table.insert(infos, info) |
table.insert(infos, info) |
||
end |
end |
||
-- Testa se existe "il." no subcampo $a (deve estar no subcampo $b) |
-- Testa se existe "il." no subcampo $a (deve estar no subcampo $b) |
||
if string.match( |
if string.match(f300a, "il%.") then |
||
a = 'Ilustrações e outros detalhes físicos devem ir no subcampo $b do campo 300, antecedidos de " : "' |
a = 'Ilustrações e outros detalhes físicos devem ir no subcampo $b do campo 300, antecedidos de " : "' |
||
info = string.format( |
info = string.format('* <strong class="error">%s.</strong>', a) |
||
table.insert(infos, info) |
table.insert(infos, info) |
||
end |
end |
||
end |
end |
||
local f300b = frame:expandTemplate {title = |
local f300b = frame:expandTemplate {title = "Select", args = {"300", "b", target}} or "" |
||
if f300b ~= |
if f300b ~= "" then |
||
-- Testa se existe ".;" no subcampo $b do campo 300 |
-- Testa se existe ".;" no subcampo $b do campo 300 |
||
if string.match( |
if string.match(f300b, "%.;") then |
||
a = |
a = "Inclua um espaço entre o ponto e o ponto e vírgula (campo 300, subcampo $b)" |
||
info = string.format( |
info = string.format('* <strong class="error">%s.</strong>', a) |
||
table.insert(infos, info) |
table.insert(infos, info) |
||
end |
end |
||
if string.match( |
if string.match(f300b, "il,") then |
||
a = |
a = "Falta um ponto na abreviatura para ilustrações (il.)" |
||
info = string.format( |
info = string.format('* <strong class="error">%s.</strong>', a) |
||
table.insert(infos, info) |
table.insert(infos, info) |
||
end |
end |
||
end |
end |
||
local f300c = frame:expandTemplate {title = |
local f300c = frame:expandTemplate {title = "Select", args = {"300", "c", target}} or "" |
||
if f300c ~= |
if f300c ~= "" then |
||
-- Testa se a sintaxe das dimensões está correta |
-- Testa se a sintaxe das dimensões está correta |
||
if string.match( |
if string.match(f300c, "%d[a-z]") then |
||
a = |
|||
a = 'Atenção, a sintaxe correta para a dimensão é: "NN cm" ou, menos frequentemente, "NN x NN cm" (subcampo $c do campo 300)' |
|||
'Atenção, a sintaxe correta para a dimensão é: "NN cm" ou, menos frequentemente, "NN x NN cm" (subcampo $c do campo 300)' |
|||
info = string.format( '* <strong class="error">%s.</strong>', a ) |
|||
info = string.format('* <strong class="error">%s.</strong>', a) |
|||
table.insert(infos, info) |
table.insert(infos, info) |
||
end |
end |
||
else |
else |
||
a = |
a = "Não foi detectado um subcampo $c no campo 300" |
||
info = string.format( |
info = string.format('* <strong class="error">%s.</strong>', a) |
||
table.insert(infos, info) |
table.insert(infos, info) |
||
end |
end |
||
-- Testa se a pontuação antes da dimensão é ".", "," ou ":" |
-- Testa se a pontuação antes da dimensão é ".", "," ou ":" |
||
if string.match( |
if string.match(f300, "[.,:]%s?%$c") then |
||
a = 'A pontuação que precede a dimensão (300 $c) deve ser " ; "' |
a = 'A pontuação que precede a dimensão (300 $c) deve ser " ; "' |
||
info = string.format( |
info = string.format('* <strong class="error">%s.</strong>', a) |
||
table.insert(infos, info) |
table.insert(infos, info) |
||
end |
end |
||
-- Testa se o subcampo $c termina em "-" |
-- Testa se o subcampo $c termina em "-" |
||
if string.match( |
if string.match(f300, "%-$") then |
||
a = |
a = "Nunca inclua hifens de separação de áreas do AACR2 em registros MARC 21. Reveja a pontuação (campo 300)" |
||
info = string.format( |
info = string.format('* <strong class="error">%s.</strong>', a) |
||
table.insert(infos, info) |
table.insert(infos, info) |
||
end |
end |
||
end |
end |
||
local f440 = |
|||
local f440 = mw.text.trim( frame:expandTemplate {title = 'Field data string', args = {'440', '0', '0', fullpagename = target}} ) or '' |
|||
mw.text.trim(frame:expandTemplate {title = "Field data string", args = {"440", "0", "0", fullpagename = target}}) or |
|||
if f440 ~= '' then |
|||
"" |
|||
a = 'O campo 440 é obsoleto. Mova seu conteúdo para o campo 490' |
|||
if f440 ~= "" then |
|||
info = string.format( '* <strong class="error">%s.</strong>', a ) |
|||
a = "O campo 440 é obsoleto. Mova seu conteúdo para o campo 490" |
|||
info = string.format('* <strong class="error">%s.</strong>', a) |
|||
table.insert(infos, info) |
table.insert(infos, info) |
||
end |
end |
||
-- Testa se existem indicadores, parênteses no subcampo $a do campo 490 e se existe ";" antes da numeração da série |
-- Testa se existem indicadores, parênteses no subcampo $a do campo 490 e se existe ";" antes da numeração da série |
||
local f490 = |
|||
local f490 = mw.text.trim( frame:expandTemplate {title = 'Field data string', args = {'490', '0', '0', fullpagename = target}} ) or '' |
|||
mw.text.trim(frame:expandTemplate {title = "Field data string", args = {"490", "0", "0", fullpagename = target}}) or |
|||
if f490 ~= '' then |
|||
"" |
|||
if f490:sub(2, 2) ~= '#' then |
|||
if f490 ~= "" then |
|||
a = 'O segundo indicador do campo 490 foi preenchido, porém, ele não deve ser preenchido' |
|||
if f490:sub(2, 2) ~= "#" then |
|||
info = string.format( '* <strong class="error">%s.</strong>', a ) |
|||
a = "O segundo indicador do campo 490 foi preenchido, porém, ele não deve ser preenchido" |
|||
info = string.format('* <strong class="error">%s.</strong>', a) |
|||
table.insert(infos, info) |
table.insert(infos, info) |
||
end |
end |
||
local f490a = frame:expandTemplate {title = |
local f490a = frame:expandTemplate {title = "Select", args = {"490", "a", target}} or "" |
||
if f490a ~= |
if f490a ~= "" then |
||
if string.match( |
if string.match(f490a, "^%(") then |
||
a = |
a = "Segundo as orientações do MARC 21, não inclua os parênteses no campo 490 ou 830" |
||
info = string.format( |
info = string.format('* <strong class="error">%s.</strong>', a) |
||
table.insert(infos, info) |
table.insert(infos, info) |
||
end |
end |
||
end |
end |
||
local f490v = frame:expandTemplate {title = |
local f490v = frame:expandTemplate {title = "Select", args = {"490", "v", target}} or "" |
||
if f490v ~= |
if f490v ~= "" then |
||
if not string.match( |
if not string.match(f490, ";%s?%$v") then |
||
a = |
a = "É necessária a pontuação que precede a numeração da série (490, $v)" |
||
info = string.format( |
info = string.format('* <strong class="error">%s.</strong>', a) |
||
table.insert(infos, info) |
table.insert(infos, info) |
||
end |
end |
||
end |
end |
||
-- Testa a consistência entre o indicador do 490 e a presença do campo 830 |
-- Testa a consistência entre o indicador do 490 e a presença do campo 830 |
||
local f830 = |
|||
local f830 = mw.text.trim( frame:expandTemplate {title = 'Field data string', args = {'830', '0', '0', fullpagename = target}} ) or '' |
|||
mw.text.trim( |
|||
if f490:sub(1, 1) == '#' then |
|||
frame:expandTemplate {title = "Field data string", args = {"830", "0", "0", fullpagename = target}} |
|||
a = 'Está faltando o primeiro indicador do campo 490' |
|||
) or "" |
|||
info = string.format( '* <strong class="error">%s.</strong>', a ) |
|||
if f490:sub(1, 1) == "#" then |
|||
a = "Está faltando o primeiro indicador do campo 490" |
|||
info = string.format('* <strong class="error">%s.</strong>', a) |
|||
table.insert(infos, info) |
table.insert(infos, info) |
||
elseif f490:sub(1, 1) == |
elseif f490:sub(1, 1) == "1" then |
||
if f830 == |
if f830 == "" then |
||
a = |
|||
a = 'Foi especificado um ponto de acesso secundário para a série (490, primeiro indicador com valor 1), porém, um campo 830 não foi informado' |
|||
"Foi especificado um ponto de acesso secundário para a série (490, primeiro indicador com valor 1), porém, um campo 830 não foi informado" |
|||
info = string.format( '* <strong class="error">%s.</strong>', a ) |
|||
info = string.format('* <strong class="error">%s.</strong>', a) |
|||
table.insert(infos, info) |
table.insert(infos, info) |
||
end |
end |
||
elseif f490:sub(1, 1) == |
elseif f490:sub(1, 1) == "0" then |
||
if f830 ~= |
if f830 ~= "" then |
||
a = |
|||
a = 'O primeiro indicador do campo 490 indica que não foi gerado um ponto de acesso para a série, porém, um campo 830 foi informado' |
|||
"O primeiro indicador do campo 490 indica que não foi gerado um ponto de acesso para a série, porém, um campo 830 foi informado" |
|||
info = string.format( '* <strong class="error">%s.</strong>', a ) |
|||
info = string.format('* <strong class="error">%s.</strong>', a) |
|||
table.insert(infos, info) |
table.insert(infos, info) |
||
end |
end |
||
else |
else |
||
a = |
a = "O primeiro indicador do campo 490 foi preenchido incorretamente" |
||
info = string.format( |
info = string.format('* <strong class="error">%s.</strong>', a) |
||
table.insert(infos, info) |
table.insert(infos, info) |
||
end |
end |
||
end |
end |
||
-- Testa se a nota 500 acaba com "." |
-- Testa se a nota 500 acaba com "." |
||
local f500 = |
|||
local f500 = mw.text.trim( frame:expandTemplate {title = 'Field data string', args = {'500', '0', '0', fullpagename = target}} ) or '' |
|||
mw.text.trim(frame:expandTemplate {title = "Field data string", args = {"500", "0", "0", fullpagename = target}}) or |
|||
if f500 ~= '' then |
|||
"" |
|||
if string.match( f500, '[a-zA-ZÀ-ü0-9:;-]$' ) then |
|||
if f500 ~= "" then |
|||
a = 'Nossa política de catalogação define que as notas devem terminar com um ponto (500)' |
|||
if string.match(f500, "[a-zA-ZÀ-ü0-9:;-]$") then |
|||
a = "Nossa política de catalogação define que as notas devem terminar com um ponto (500)" |
|||
info = string.format('* <strong class="error">%s.</strong>', a) |
|||
table.insert(infos, info) |
table.insert(infos, info) |
||
end |
end |
||
end |
end |
||
-- Testa se a nota 504 acaba com "." e se existe uso de maiúsculas no meio da nota |
-- Testa se a nota 504 acaba com "." e se existe uso de maiúsculas no meio da nota |
||
local f504 = |
|||
local f504 = mw.text.trim( frame:expandTemplate {title = 'Field data string', args = {'504', '0', '0', fullpagename = target}} ) or '' |
|||
mw.text.trim(frame:expandTemplate {title = "Field data string", args = {"504", "0", "0", fullpagename = target}}) or |
|||
if f504 ~= '' then |
|||
"" |
|||
if string.match( f504, '[a-zA-ZÀ-ü0-9]$' ) then |
|||
if f504 ~= "" then |
|||
a = 'Nossa política de catalogação define que as notas devem terminar com um ponto (504)' |
|||
if string.match(f504, "[a-zA-ZÀ-ü0-9]$") then |
|||
a = "Nossa política de catalogação define que as notas devem terminar com um ponto (504)" |
|||
info = string.format('* <strong class="error">%s.</strong>', a) |
|||
table.insert(infos, info) |
table.insert(infos, info) |
||
end |
end |
||
-- Testa se existe uso de maiúsculas no meio da nota 504 |
-- Testa se existe uso de maiúsculas no meio da nota 504 |
||
if string.match( |
if string.match(f504, ".*%s[A-Z]") then |
||
a = |
a = "Verifique o uso de maiúsculas na nota do campo 504" |
||
info = string.format( |
info = string.format('* <strong class="error">%s.</strong>', a) |
||
table.insert(infos, info) |
table.insert(infos, info) |
||
end |
end |
||
end |
end |
||
local f600 = |
|||
local f600 = mw.text.trim( frame:expandTemplate {title = 'Field data string', args = {'600', '0', '0', fullpagename = target}} ) or '' |
|||
mw.text.trim(frame:expandTemplate {title = "Field data string", args = {"600", "0", "0", fullpagename = target}}) or |
|||
-- a seguir, testa os indicadores dos campos 6XX |
|||
"" |
|||
-- Testa os indicadores dos campos 6XX |
|||
if f600 ~= "" then |
|||
a = 'Está faltando o primeiro indicador do campo 600' |
|||
if f600:sub(1, 1) == "#" then |
|||
info = string.format( '* <strong class="error">%s.</strong>', a ) |
|||
a = "Está faltando o primeiro indicador do campo 600" |
|||
info = string.format('* <strong class="error">%s.</strong>', a) |
|||
table.insert(infos, info) |
table.insert(infos, info) |
||
end |
end |
||
if f600:sub(2, 2) ~= |
if f600:sub(2, 2) ~= "4" then |
||
a = 'Nossa política de catalogação define que o segundo indicador do campo 600 deve ser sempre "4"' |
a = 'Nossa política de catalogação define que o segundo indicador do campo 600 deve ser sempre "4"' |
||
info = string.format( |
info = string.format('* <strong class="error">%s.</strong>', a) |
||
table.insert(infos, info) |
table.insert(infos, info) |
||
end |
end |
||
-- Testa se existe "," no subcampo $a (Nome, Sobrenome) |
-- Testa se existe "," no subcampo $a (Nome, Sobrenome) |
||
local f600a = frame:expandTemplate {title = |
local f600a = frame:expandTemplate {title = "Select", args = {"600", "a", target}} or "" |
||
if f600a ~= |
if f600a ~= "" then |
||
if not string.match( |
if not string.match(f600a, ".*,.") then |
||
a = |
a = "Em pontos de acesso, o nome pessoal deve ser invertido (Nome, Sobrenome). Verifique o campo 600" |
||
info = string.format( |
info = string.format('* <strong class="error">%s.</strong>', a) |
||
table.insert(infos, info) |
table.insert(infos, info) |
||
end |
end |
||
if string.match( |
if string.match(f600a, "[a-zÀ-ü],[A-ZÀ-ü]") then |
||
a = |
a = "Falta espaço após a vírgula. Verifique o campo 600" |
||
info = string.format( |
info = string.format('* <strong class="error">%s.</strong>', a) |
||
table.insert(infos, info) |
table.insert(infos, info) |
||
end |
end |
||
end |
end |
||
local f600q = frame:expandTemplate {title = |
local f600q = frame:expandTemplate {title = "Select", args = {"600", "q", target}} or "" |
||
if f600q ~= |
if f600q ~= "" then |
||
if not string.match( |
if not string.match(f600q, "^%(") then |
||
a = |
a = "O subcampo $q do campo 600 necessita parênteses" |
||
info = string.format( |
info = string.format('* <strong class="error">%s.</strong>', a) |
||
table.insert(infos, info) |
table.insert(infos, info) |
||
end |
end |
||
end |
end |
||
end |
end |
||
local f610 = |
|||
local f610 = mw.text.trim( frame:expandTemplate {title = 'Field data string', args = {'610', '0', '0', fullpagename = target}} ) or '' |
|||
mw.text.trim(frame:expandTemplate {title = "Field data string", args = {"610", "0", "0", fullpagename = target}}) or |
|||
if f610 ~= '' then |
|||
"" |
|||
if f610:sub(1, 1) == '#' then |
|||
if f610 ~= "" then |
|||
a = 'Está faltando o primeiro indicador do campo 610' |
|||
if f610:sub(1, 1) == "#" then |
|||
info = string.format( '* <strong class="error">%s.</strong>', a ) |
|||
a = "Está faltando o primeiro indicador do campo 610" |
|||
info = string.format('* <strong class="error">%s.</strong>', a) |
|||
table.insert(infos, info) |
table.insert(infos, info) |
||
end |
end |
||
if f610:sub(2, 2) ~= |
if f610:sub(2, 2) ~= "4" then |
||
a = 'Nossa política de catalogação define que o segundo indicador do campo 610 deve ser sempre "4"' |
a = 'Nossa política de catalogação define que o segundo indicador do campo 610 deve ser sempre "4"' |
||
info = string.format( |
info = string.format('* <strong class="error">%s.</strong>', a) |
||
table.insert(infos, info) |
table.insert(infos, info) |
||
end |
end |
||
end |
end |
||
local f611 = |
|||
local f611 = mw.text.trim( frame:expandTemplate {title = 'Field data string', args = {'611', '0', '0', fullpagename = target}} ) or '' |
|||
mw.text.trim(frame:expandTemplate {title = "Field data string", args = {"611", "0", "0", fullpagename = target}}) or |
|||
if f611 ~= '' then |
|||
"" |
|||
if f611:sub(1, 1) == '#' then |
|||
if f611 ~= "" then |
|||
a = 'Está faltando o primeiro indicador do campo 611' |
|||
if f611:sub(1, 1) == "#" then |
|||
info = string.format( '* <strong class="error">%s.</strong>', a ) |
|||
a = "Está faltando o primeiro indicador do campo 611" |
|||
info = string.format('* <strong class="error">%s.</strong>', a) |
|||
table.insert(infos, info) |
table.insert(infos, info) |
||
end |
end |
||
if f611:sub(2, 2) ~= |
if f611:sub(2, 2) ~= "4" then |
||
a = 'Nossa política de catalogação define que o segundo indicador do campo 611 deve ser sempre "4"' |
a = 'Nossa política de catalogação define que o segundo indicador do campo 611 deve ser sempre "4"' |
||
info = string.format( |
info = string.format('* <strong class="error">%s.</strong>', a) |
||
table.insert(infos, info) |
table.insert(infos, info) |
||
end |
end |
||
end |
end |
||
local f630 = |
|||
local f630 = mw.text.trim( frame:expandTemplate {title = 'Field data string', args = {'630', '0', '0', fullpagename = target}} ) or '' |
|||
mw.text.trim(frame:expandTemplate {title = "Field data string", args = {"630", "0", "0", fullpagename = target}}) or |
|||
if f630 ~= '' then |
|||
"" |
|||
if f630:sub(1, 1) == '#' then |
|||
if f630 ~= "" then |
|||
a = 'Está faltando o primeiro indicador do campo 630' |
|||
if f630:sub(1, 1) == "#" then |
|||
info = string.format( '* <strong class="error">%s.</strong>', a ) |
|||
a = "Está faltando o primeiro indicador do campo 630" |
|||
info = string.format('* <strong class="error">%s.</strong>', a) |
|||
table.insert(infos, info) |
table.insert(infos, info) |
||
end |
end |
||
if f630:sub(2, 2) ~= |
if f630:sub(2, 2) ~= "4" then |
||
a = 'Nossa política de catalogação define que o segundo indicador do campo 630 deve ser sempre "4"' |
a = 'Nossa política de catalogação define que o segundo indicador do campo 630 deve ser sempre "4"' |
||
info = string.format( |
info = string.format('* <strong class="error">%s.</strong>', a) |
||
table.insert(infos, info) |
table.insert(infos, info) |
||
end |
end |
||
end |
end |
||
local f650 = |
|||
local f650 = mw.text.trim( frame:expandTemplate {title = 'Field data string', args = {'650', '0', '0', fullpagename = target}} ) or '' |
|||
mw.text.trim(frame:expandTemplate {title = "Field data string", args = {"650", "0", "0", fullpagename = target}}) or |
|||
if f650 ~= '' then |
|||
"" |
|||
if f650:sub(1, 1) ~= '0' then |
|||
if f650 ~= "" then |
|||
if f650:sub(1, 1) ~= "0" then |
|||
a = 'Nossa política de catalogação define que o primeiro indicador do campo 650 deve ser sempre "0"' |
a = 'Nossa política de catalogação define que o primeiro indicador do campo 650 deve ser sempre "0"' |
||
info = string.format( |
info = string.format('* <strong class="error">%s.</strong>', a) |
||
table.insert(infos, info) |
table.insert(infos, info) |
||
end |
end |
||
if f650:sub(2, 2) ~= |
if f650:sub(2, 2) ~= "4" then |
||
a = 'Nossa política de catalogação define que o segundo indicador do campo 650 deve ser sempre "4"' |
a = 'Nossa política de catalogação define que o segundo indicador do campo 650 deve ser sempre "4"' |
||
info = string.format( |
info = string.format('* <strong class="error">%s.</strong>', a) |
||
table.insert(infos, info) |
table.insert(infos, info) |
||
end |
end |
||
-- Testa se os assuntos começam com letra minúscula |
-- Testa se os assuntos começam com letra minúscula |
||
if string.match( |
if string.match(f650, "%$[axzy][a-zà-ü]") then |
||
a = |
a = "Os assuntos principais e suas subdivisões devem começar com letra maiúscula" |
||
info = string.format( |
info = string.format('* <strong class="error">%s.</strong>', a) |
||
table.insert(infos, info) |
table.insert(infos, info) |
||
end |
end |
||
-- Testa se um subcampo termina em "-" |
-- Testa se um subcampo termina em "-" |
||
if string.match( |
if string.match(f650, "%-%s?%$") then |
||
a = |
a = "Nunca inclua hifens entre termos de assuntos" |
||
info = string.format( |
info = string.format('* <strong class="error">%s.</strong>', a) |
||
table.insert(infos, info) |
table.insert(infos, info) |
||
end |
end |
||
end |
end |
||
local f651 = |
|||
local f651 = mw.text.trim( frame:expandTemplate {title = 'Field data string', args = {'651', '0', '0', fullpagename = target}} ) or '' |
|||
mw.text.trim(frame:expandTemplate {title = "Field data string", args = {"651", "0", "0", fullpagename = target}}) or |
|||
if f651 ~= '' then |
|||
"" |
|||
if f651:sub(1, 1) ~= '#' then |
|||
if f651 ~= "" then |
|||
if f651:sub(1, 1) ~= "#" then |
|||
a = 'Nossa política de catalogação define que o primeiro indicador do campo 651 deve ser sempre "#"' |
a = 'Nossa política de catalogação define que o primeiro indicador do campo 651 deve ser sempre "#"' |
||
info = string.format( |
info = string.format('* <strong class="error">%s.</strong>', a) |
||
table.insert(infos, info) |
table.insert(infos, info) |
||
end |
end |
||
if f651:sub(2, 2) ~= |
if f651:sub(2, 2) ~= "4" then |
||
a = 'Nossa política de catalogação define que o segundo indicador do campo 651 deve ser sempre "4"' |
a = 'Nossa política de catalogação define que o segundo indicador do campo 651 deve ser sempre "4"' |
||
info = string.format( |
info = string.format('* <strong class="error">%s.</strong>', a) |
||
table.insert(infos, info) |
table.insert(infos, info) |
||
end |
end |
||
end |
end |
||
-- Testa os pontos de acesso secundários, tal como os principais |
-- Testa os pontos de acesso secundários, tal como os principais |
||
local f700 = |
|||
local f700 = mw.text.trim( frame:expandTemplate {title = 'Field data string', args = {'700', '0', '0', fullpagename = target}} ) or '' |
|||
mw.text.trim(frame:expandTemplate {title = "Field data string", args = {"700", "0", "0", fullpagename = target}}) or |
|||
if f700 ~= '' then |
|||
"" |
|||
info = 'Um ponto de acesso secundário foi dado a uma <b>pessoa</b>' |
|||
if f700 ~= "" then |
|||
info = "Um ponto de acesso secundário foi dado a uma <b>pessoa</b>" |
|||
if f700:sub(1, 1) == "0" then |
|||
info = string.format( '* %s %s.', info, a ) |
|||
a = "e a entrada começa pelo seu <b>primeiro nome</b>" |
|||
info = string.format("* %s %s.", info, a) |
|||
table.insert(infos, info) |
table.insert(infos, info) |
||
elseif f700:sub(1, 1) == |
elseif f700:sub(1, 1) == "1" then |
||
a = |
a = "e a entrada começa pelo seu <b>sobrenome</b>" |
||
info = string.format( |
info = string.format("* %s %s.", info, a) |
||
table.insert(infos, info) |
table.insert(infos, info) |
||
elseif f700:sub(1, 1) == |
elseif f700:sub(1, 1) == "3" then |
||
a = |
a = "e a entrada começa pelo seu <b>nome de família</b>" |
||
info = string.format( |
info = string.format("* %s %s.", info, a) |
||
table.insert(infos, info) |
table.insert(infos, info) |
||
elseif f700:sub(1, 1) == |
elseif f700:sub(1, 1) == "#" then |
||
a = |
a = "o primeiro indicador não foi preenchido" |
||
info = string.format( |
info = string.format('* %s, porém, <strong class="error">%s.</strong>', info, a) |
||
table.insert(infos, info) |
table.insert(infos, info) |
||
else |
else |
||
a = "o primeiro indicador foi preenchido incorretamente" |
|||
info = string.format('* %s, porém, <strong class="error">%s.</strong>', info, a) |
|||
table.insert(infos, info) |
|||
end |
end |
||
if f700:sub(2, 2) ~= |
if f700:sub(2, 2) ~= "#" then |
||
a = |
a = "O segundo indicador do campo 700 foi preenchido, porém, ele não deve ser preenchido" |
||
info = string.format( |
info = string.format('* <strong class="error">%s.</strong>', a) |
||
table.insert(infos, info) |
table.insert(infos, info) |
||
end |
end |
||
-- Testa se existe mais de um subcampo $a no mesmo campo 700 |
-- Testa se existe mais de um subcampo $a no mesmo campo 700 |
||
local exist700 = frame:expandTemplate {title = "Exist", args = {"700", target}} or false |
|||
if |
if exist700 == "yes" then |
||
if string.match( |
if string.match(f700, "%$a.*%$a.-$") then |
||
a = |
a = "Há mais de um subcampo $a no campo 700. O subcampo $a não é repetível" |
||
info = string.format( |
info = string.format('* <strong class="error">%s.</strong>', a) |
||
table.insert(infos, info) |
table.insert(infos, info) |
||
end |
end |
||
-- testa se existe "," no subcampo $a (Nome, Sobrenome) |
-- testa se existe "," no subcampo $a (Nome, Sobrenome) |
||
local f700a = frame:expandTemplate {title = |
local f700a = frame:expandTemplate {title = "Select", args = {"700", "a", target}} |
||
if f700a ~= |
if f700a ~= "" then |
||
if not string.match(f700a, |
if not string.match(f700a, ".-,.") then |
||
a = |
a = "Em pontos de acesso, o nome pessoal deve ser invertido (Nome, Sobrenome). Verifique o campo 700" |
||
info = string.format( |
info = string.format('* <strong class="error">%s.</strong>', a) |
||
table.insert(infos, info) |
table.insert(infos, info) |
||
end |
end |
||
if string.match(f700a, |
if string.match(f700a, "[a-zÀ-ü],[A-ZÀ-ü]") then |
||
a = |
a = "Falta espaço após a vírgula. Verifique o campo 700" |
||
info = string.format( |
info = string.format('* <strong class="error">%s.</strong>', a) |
||
table.insert(infos, info) |
table.insert(infos, info) |
||
end |
end |
||
end |
end |
||
local f700q = frame:expandTemplate {title = |
local f700q = frame:expandTemplate {title = "Select", args = {"700", "q", target}} |
||
if f700q ~= |
if f700q ~= "" then |
||
if not string.match(f700q, |
if not string.match(f700q, "^%(") then |
||
a = |
a = "O subcampo $q do campo 700 necessita parênteses" |
||
info = string.format( |
info = string.format('* <strong class="error">%s.</strong>', a) |
||
table.insert(infos, info) |
table.insert(infos, info) |
||
end |
end |
||
Linha 996: | Linha 1 082: | ||
end |
end |
||
end |
end |
||
local f710 = |
|||
local f710 = mw.text.trim( frame:expandTemplate {title = 'Field data string', args = {'710', '0', '0', fullpagename = target}} ) or '' |
|||
mw.text.trim(frame:expandTemplate {title = "Field data string", args = {"710", "0", "0", fullpagename = target}}) or |
|||
if f710 ~= '' then |
|||
"" |
|||
info = 'Um ponto de acesso secundário foi dado a uma <b>entidade coletiva</b>' |
|||
if f710 ~= "" then |
|||
info = "Um ponto de acesso secundário foi dado a uma <b>entidade coletiva</b>" |
|||
if f710:sub(1, 1) == "0" then |
|||
info = string.format( '* %s %s.', info, a ) |
|||
a = "e a entrada começa por um <b>nome invertido</b>" |
|||
info = string.format("* %s %s.", info, a) |
|||
table.insert(infos, info) |
table.insert(infos, info) |
||
elseif f710:sub(1, 1) == |
elseif f710:sub(1, 1) == "1" then |
||
a = |
a = "e a entrada começa por um <b>nome de jurisdição</b>" |
||
info = string.format( |
info = string.format("* %s %s.", info, a) |
||
table.insert(infos, info) |
table.insert(infos, info) |
||
elseif f710:sub(1, 1) == |
elseif f710:sub(1, 1) == "2" then |
||
a = |
a = "e a entrada começa por um <b>nome em ordem direta</b>" |
||
info = string.format( |
info = string.format("* %s %s.", info, a) |
||
table.insert(infos, info) |
table.insert(infos, info) |
||
elseif f710:sub(1, 1) == |
elseif f710:sub(1, 1) == "#" then |
||
a = |
a = "o primeiro indicador não foi preenchido" |
||
info = string.format( |
info = string.format('* %s, porém, <strong class="error">%s.</strong>', info, a) |
||
table.insert(infos, info) |
table.insert(infos, info) |
||
else |
else |
||
a = "o primeiro indicador foi preenchido incorretamente" |
|||
info = string.format('* %s, porém, <strong class="error">%s.</strong>', info, a) |
|||
table.insert(infos, info) |
|||
end |
end |
||
if f710:sub(2, 2) ~= |
if f710:sub(2, 2) ~= "#" then |
||
a = |
a = "O segundo indicador do campo 710 foi preenchido, porém, ele não deve ser preenchido" |
||
info = string.format( |
info = string.format('* <strong class="error">%s.</strong>', a) |
||
table.insert(infos, info) |
table.insert(infos, info) |
||
end |
end |
||
end |
end |
||
local f711 = |
|||
local f711 = mw.text.trim( frame:expandTemplate {title = 'Field data string', args = {'711', '0', '0', fullpagename = target}} ) or '' |
|||
mw.text.trim(frame:expandTemplate {title = "Field data string", args = {"711", "0", "0", fullpagename = target}}) or |
|||
if f711 ~= '' then |
|||
"" |
|||
info = 'Um ponto de acesso secundário foi dado a um <b>evento</b>' |
|||
if f711 ~= "" then |
|||
info = "Um ponto de acesso secundário foi dado a um <b>evento</b>" |
|||
if f711:sub(1, 1) == "0" then |
|||
info = string.format ( '* %s %s.' , info, a ) |
|||
a = "e a entrada começa por um <b>nome invertido</b>" |
|||
info = string.format("* %s %s.", info, a) |
|||
table.insert(infos, info) |
table.insert(infos, info) |
||
elseif f711:sub(1, 1) == |
elseif f711:sub(1, 1) == "1" then |
||
a = |
a = "e a entrada começa por um <b>nome de jurisdição</b>" |
||
info = string.format |
info = string.format("* %s %s.", info, a) |
||
table.insert(infos, info) |
table.insert(infos, info) |
||
elseif f711:sub(1, 1) == |
elseif f711:sub(1, 1) == "2" then |
||
a = |
a = "e a entrada começa por um <b>nome em ordem direta</b>" |
||
info = string.format |
info = string.format("* %s %s.", info, a) |
||
table.insert(infos, info) |
table.insert(infos, info) |
||
elseif f711:sub(1, 1) == |
elseif f711:sub(1, 1) == "#" then |
||
a = |
a = "o primeiro indicador não foi preenchido" |
||
info = string.format |
info = string.format('* %s, porém, <strong class="error">%s.</strong>', info, a) |
||
table.insert(infos, info) |
table.insert(infos, info) |
||
else |
else |
||
a = "o primeiro indicador foi preenchido incorretamente" |
|||
info = string.format('* %s, porém, <strong class="error">%s.</strong>', info, a) |
|||
table.insert(infos, info) |
|||
end |
end |
||
if f711:sub(2, 2) ~= |
if f711:sub(2, 2) ~= "#" then |
||
a = |
a = "O segundo indicador do campo 711 foi preenchido, porém, ele não deve ser preenchido" |
||
info = string.format( |
info = string.format('* <strong class="error">%s.</strong>', a) |
||
table.insert(infos, info) |
table.insert(infos, info) |
||
end |
end |
||
end |
end |
||
-- |
-- Testa os indicadores do campo 830 |
||
local f830 = |
|||
local f830 = mw.text.trim( frame:expandTemplate {title = 'Field data string', args = {'830', '0', '0', fullpagename = target}} ) or '' |
|||
mw.text.trim(frame:expandTemplate {title = "Field data string", args = {"830", "0", "0", fullpagename = target}}) or |
|||
if f830 ~= '' then |
|||
"" |
|||
if f830:sub(1, 1) ~= '#' then |
|||
if f830 ~= "" then |
|||
a = 'O primeiro indicador do campo 830 foi preenchido, porém, ele não deve ser preenchido' |
|||
if f830:sub(1, 1) ~= "#" then |
|||
info = string.format ( '* <strong class="error">%s.</strong>' , a ) |
|||
a = "O primeiro indicador do campo 830 foi preenchido, porém, ele não deve ser preenchido" |
|||
info = string.format('* <strong class="error">%s.</strong>', a) |
|||
table.insert(infos, info) |
table.insert(infos, info) |
||
end |
end |
||
if f830:sub(2, 2) == |
if f830:sub(2, 2) == "#" then |
||
a = |
a = "O segundo indicador do campo 830 precisa ser preenchido" |
||
info = string.format |
info = string.format('* <strong class="error">%s.</strong>', a) |
||
table.insert(infos, info) |
table.insert(infos, info) |
||
end |
end |
||
local f830v = frame:expandTemplate {title = |
local f830v = frame:expandTemplate {title = "Select", args = {"830", "v", target}} or "" |
||
if f830v ~= |
if f830v ~= "" then |
||
if not string.match( |
if not string.match(f830v, ";%s?%$v") then |
||
a = |
a = "É necessária a pontuação que precede a numeração da série (830, $v)" |
||
info = string.format |
info = string.format('* <strong class="error">%s.</strong>', a) |
||
table.insert(infos, info) |
table.insert(infos, info) |
||
end |
end |
||
end |
end |
||
end |
end |
||
local f856 = |
|||
local f856 = mw.text.trim( frame:expandTemplate {title = 'Field data string', args = {'856', '0', '0', fullpagename = target}} ) or '' |
|||
mw.text.trim(frame:expandTemplate {title = "Field data string", args = {"856", "0", "0", fullpagename = target}}) or |
|||
if f856 ~= '' then |
|||
"" |
|||
if f856:sub(1, 1) ~= '4' then |
|||
if f856 ~= "" then |
|||
if f856:sub(1, 1) ~= "4" then |
|||
a = 'O primeiro indicador do campo 856 precisa ter o valor "4"' |
a = 'O primeiro indicador do campo 856 precisa ter o valor "4"' |
||
info = string.format |
info = string.format('* <strong class="error">%s.</strong>', a) |
||
table.insert(infos, info) |
table.insert(infos, info) |
||
end |
end |
||
local f856a = frame:expandTemplate {title = |
local f856a = frame:expandTemplate {title = "Select", args = {"856", "a", target}} or "" |
||
if f856a ~= |
if f856a ~= "" then |
||
a = |
a = "Normalmente, o subcampo utilizado no 856 é o $u, não o $a" |
||
info = string.format |
info = string.format('* <strong class="error">%s.</strong>', a) |
||
table.insert(infos, info) |
table.insert(infos, info) |
||
end |
end |
||
Linha 1 095: | Linha 1 189: | ||
local isoRecord = |
local isoRecord = |
||
frame:callParserFunction { |
frame:callParserFunction { |
||
name = |
name = "#ask:[[-Has subobject::" .. "B000004" .. "]][[Field data::+]]", |
||
args = { |
|||
args = {'?Field data', format = 'plainlist', link = 'none', headers = 'hide', mainlabel = '-', outro = '', sep = '', valuesep = '', propsep = ''} } or '' |
|||
"?Field data", |
|||
if string.match( isoRecord, '%s[.,][^.]' ) then |
|||
format = "plainlist", |
|||
a = 'Pontos finais ou vírgulas nunca devem ser precedidos por um espaço' |
|||
link = "none", |
|||
info = string.format ( '* <strong class="error">%s.</strong>' , a ) |
|||
headers = "hide", |
|||
mainlabel = "-", |
|||
outro = "", |
|||
sep = "", |
|||
valuesep = "", |
|||
propsep = "" |
|||
} |
|||
} or "" |
|||
if string.match(isoRecord, "%s[.,][^.]") then |
|||
a = "Pontos finais ou vírgulas nunca devem ser precedidos por um espaço" |
|||
info = string.format('* <strong class="error">%s.</strong>', a) |
|||
table.insert(infos, info) |
table.insert(infos, info) |
||
end |
end |
||
if string.match( |
if string.match(isoRecord, "%$[A-Z]") then |
||
a = |
a = "Não são permitidos designadores de subcampos com letras maiúsculas" |
||
info = string.format |
info = string.format('* <strong class="error">%s.</strong>', a) |
||
table.insert(infos, info) |
table.insert(infos, info) |
||
end |
end |
||
end -- end if 245 |
end -- end if 245 |
||
return table.concat(infos, |
return table.concat(infos, "\n") |
||
end |
end |
||
Edição das 16h47min de 20 de agosto de 2021
A documentação para este módulo pode ser criada em Módulo:BibRules/doc
local p = {}
function p.Rules(frame)
-- 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 info, a, b
local infos = {}
-- Funções básicas
local function ucfirst(str)
return (str:gsub("^%l", string.upper))
end
-- Somente realiza as análises se existir o campo 245
local f245 =
mw.text.trim(frame:expandTemplate {title = "Field data string", args = {"245", "0", "0", fullpagename = target}}) or
""
if f245 ~= "" then
-- Record status
local recordStatus =
frame:expandTemplate {
title = "Field data string",
args = {"000", "5", "1", property = "Leader", fullpagename = target}
} or false
if recordStatus == "n" then
a = "Segundo o Líder, este é um registro <b>novo</b> (não um alterado ou revisado, expandido, excluído, etc.)"
info = string.format("* %s.", a)
table.insert(infos, info)
elseif recordStatus == "c" then
a = "Segundo o Líder, este é um registro <b>alterado ou revisado</b> (não um novo, expandido, excluído, etc.)"
info = string.format("* %s.", a)
table.insert(infos, info)
elseif recordStatus == "a" or recordStatus == "d" or recordStatus == "p" then
a = "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
local typeOfRecord =
frame:expandTemplate {
title = "Field data string",
args = {"000", "6", "1", property = "Leader", fullpagename = target}
} or false
if typeOfRecord == "a" then
a = "Segundo o Líder, este registro descreve um <b>material textual</b>"
info = string.format("* %s.", a)
table.insert(infos, info)
end
-- Bibliographic level
local bibliographicLevel =
frame:expandTemplate {
title = "Field data string",
args = {"000", "7", "1", property = "Leader", fullpagename = target}
} or false
if bibliographicLevel == "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 = string.format("* %s.", a)
table.insert(infos, info)
end
-- Encoding level
local encodingLevel =
frame:expandTemplate {
title = "Field data string",
args = {"000", "17", "1", property = "Leader", fullpagename = target}
} or false
if encodingLevel == "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 = string.format("* %s.", a)
table.insert(infos, info)
elseif encodingLevel == "#" 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 = string.format("* %s.", a)
table.insert(infos, info)
end
-- Descriptive cataloging form
local descriptiveCatalogingForm =
frame:expandTemplate {
title = "Field data string",
args = {"000", "18", "1", property = "Leader", fullpagename = target}
} or false
if descriptiveCatalogingForm == "a" then
a = "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
a = "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 f003 =
frame:expandTemplate {
title = "Field data string",
args = {"003", "0", "", property = "Control field data", fullpagename = target}
}
a = "Internamente, este registro é identificado pelo código"
b = "para sistemas externos, o código é"
info = string.format('* %s "%s"; %s "(%s)%s".', a, f001, b, f003, f001)
table.insert(infos, info)
-- Campo 005
local creationDate =
mw.smw.ask("[[" .. target .. "]]|?Creation date#-F[l, d \\d\\e F \\d\\e Y]|headers=hide|mainlabel=-") or ""
if type(creationDate) == "table" then
for _, row in pairs(creationDate) do
for _, data in pairs(row) do
creationDate = data
end
end
end
local modificationDate =
mw.smw.ask("[[" .. target .. "]]|?Modification date#-F[l, d \\d\\e F \\d\\e Y]|headers=hide|mainlabel=-")
if type(modificationDate) == "table" then
for _, row in pairs(modificationDate) do
for _, data in pairs(row) do
modificationDate = data
end
end
end
a = "O registro foi criado em:"
b = "Sua última transação foi em:"
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 pubPlaceTbl = {
["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
a = "O uso de maiúsculas não é permitido no campo 008, local de publicação"
info = string.format('* <strong class="error">%s.</strong>', a)
table.insert(infos, info)
elseif pubPlaceTbl[f008pubPlace] then
a = "O item possui a seguinte origem:"
info = string.format("* %s %s", a, tostring(pubPlaceTbl[f008pubPlace]))
table.insert(infos, info)
else
a = "O item possui a seguinte origem:"
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 langTbl = {
["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
a = "O uso de maiúsculas não é permitido no campo 008, idioma"
info = string.format('* <strong class="error">%s.</strong>', a)
elseif langTbl[f008lang] then
a = "Majoritariamente, o item se expressa no seguinte idioma:"
info = string.format("* %s %s", a, tostring(langTbl[f008lang]))
else
a = "Majoritariamente, o item se expressa no seguinte idioma:"
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 f041 =
mw.text.trim(frame:expandTemplate {title = "Field data string", args = {"041", "0", "0", fullpagename = target}}) or
""
if f041 ~= "" then
if f041:sub(1, 1) == "1" then
local f041h = frame:expandTemplate {title = "Select", args = {"041", "h", target}}
f041h = langTbl[f041h] or f041h
info = string.format("%s (traduzido do %s)", info, f041h)
end
end
table.insert(infos, info)
-- Testa se existe(m) ISBN(s) inválido(s)
local f020 =
mw.text.trim(frame:expandTemplate {title = "Field data string", args = {"090", "0", "0", fullpagename = target}}) or
""
if f020 ~= "" then
local printedIsbn = frame:expandTemplate {title = "Print ISBN"} or false
if string.match(printedIsbn, "error") then
a = "ISBN inválido, por favor, reveja os números informados"
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
local f020 = mw.smw.ask("[[" .. target .. "#020]]|?Field data#|headers=hide|mainlabel=-")
if type(f020) == "table" then
for _, row in pairs(f020) do
for _, data in pairs(row) do
f020 = mw.text.trim(table.concat(data))
end
end
end
if string.match(f020, "-") then
a = 'O ISBN não pode conter hifens. Apenas números e "X" maiúsculo'
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 = string.format('* <strong class="error">%s.</strong>', a)
table.insert(infos, info)
end
-- Testa se há indicadores no campo 020
if f020:sub(1, 1) ~= "#" then
a = "O primeiro indicador do campo 020 foi preenchido, porém, ele não deve ser preenchido"
info = string.format('* <strong class="error">.</strong>', a)
table.insert(infos, info)
end
if f020:sub(2, 2) ~= "#" then
a = "O segundo indicador do campo 020 foi preenchido, porém, ele não deve ser preenchido"
info = string.format('* <strong class="error">%s.</strong>', a)
table.insert(infos, info)
end
end
-- Testa o uso de maiúsculas no campo 041
if f041 ~= "" then
if f041:sub(1, 1) == "#" then
a = "Talvez o primeiro indicador do campo 041 tenha sido esquecido"
info = string.format('* <strong class="error">%s.</strong>', a)
table.insert(infos, info)
end
local f041a = frame:expandTemplate {title = "Select", args = {"041", "a", target}} or false
if string.match(f041a, "^[A-Z]") then
a = "O uso de maiúsculas não é permitido nos códigos de idioma (campo 041)"
info = string.format('* <strong class="error">%s.</strong>', a)
table.insert(infos, info)
end
end
-- Verifica a presença de pontos de acesso principais 1XX
-- TODO: trocar callParserFunction por mw.smw.ask
-- queryResult = mw.smw.ask( '[[' .. target .. '#100||' .. target .. '#110||' .. target .. '#111||' .. target .. '#130]]' )
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)
-- Testa se há subcampo $b e se há espaço no subcampo $c do campo 090
local f090 =
mw.text.trim(frame:expandTemplate {title = "Field data string", args = {"090", "0", "0", fullpagename = target}}) or
""
if f090 ~= "" then
local f090b = frame:expandTemplate {title = "Select", args = {"090", "b", target}} or ""
if f090b == "" then
a = "Está faltando o subcampo $b do campo 090 (notação de Cutter)"
info = string.format('* <strong class="error">%s.</strong>', a)
table.insert(infos, info)
end
-- 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(f090b, "[0-9]$") then
a = "Falta a letra do título na notação de Cutter"
info = string.format('* <strong class="error">%s.</strong>', a)
table.insert(infos, info)
end
local f090c = frame:expandTemplate {title = "Select", args = {"090", "c", target}} or ""
if string.match(f090c, "%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 = string.format('* <strong class="error">%s.</strong>', a)
table.insert(infos, info)
end
end
-- 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 = string.format('* <strong class="error">%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
a = "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
a = "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
a = "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
a = "o primeiro indicador não foi preenchido"
info = string.format('* %s, porém, <strong class="error">%s.</strong>', info, a)
table.insert(infos, info)
else
a = "o primeiro indicador foi preenchido incorretamente"
info = string.format('* %s, porém, <strong class="error">%s.</strong>', info, a)
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 = string.format('* <strong class="error">%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 = string.format('* <strong class="error">%s.</strong>', a)
table.insert(infos, info)
end
if string.match(f100a, "[a-zÀ-ü],[A-ZÀ-ü]") then
a = "Falta espaço após a vírgula. Verifique o campo 100"
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
a = "O subcampo $q do campo 100 necessita parênteses"
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
a = "O subcampo $d do campo 100 necessita hífen"
info = string.format('* <strong class="error">%s.</strong>', a)
table.insert(infos, info)
end
end
end
-- Testa se existe um ponto de acesso principal 110
local f110 =
mw.text.trim(
frame:expandTemplate {title = "Field data string", args = {"110", "0", "0", fullpagename = target}} or ""
)
if f110 ~= "" then
info = "O ponto de acesso principal foi dado a uma <b>entidade coletiva</b>"
if f110:sub(1, 1) == "0" then
a = "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
a = "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
a = "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
a = "o primeiro indicador não foi preenchido"
info = string.format('* %s, porém, <strong class="error">%s.</strong>', info, a)
table.insert(infos, info)
else
a = "o primeiro indicador foi preenchido incorretamente"
info = string.format('* %s, porém, <strong class="error">%s.</strong>', info, a)
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 = string.format('* <strong class="error">%s.</strong>', a)
table.insert(infos, info)
end
end
-- Testa se existe um ponto de acesso principal 111
local f111 =
mw.text.trim(frame:expandTemplate {title = "Field data string", args = {"111", "0", "0", fullpagename = target}}) or
""
if f111 ~= "" then
info = "O ponto de acesso principal foi dado a um <b>evento</b>"
if f111:sub(1, 1) == "0" then
a = "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
a = "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
a = "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
a = "o primeiro indicador não foi preenchido"
info = string.format('* %s, porém, <strong class="error">%s.</strong>', info, a)
table.insert(infos, info)
else
a = "o primeiro indicador foi preenchido incorretamente"
info = string.format('* %s, porém, <strong class="error">%s.</strong>', info, a)
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 = string.format('* <strong class="error">%s.</strong>', a)
table.insert(infos, info)
end
end
-- Testa se existe um ponto de acesso principal 130
local f130 =
mw.text.trim(frame:expandTemplate {title = "Field data string", args = {"130", "0", "0", fullpagename = target}}) or
""
if f130 ~= "" then
info = "O ponto de acesso principal foi dado a um <b>título uniforme</b>"
if f130:sub(1, 1) == "#" then
a = "o primeiro indicador não foi preenchido"
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}}
a = 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 = string.format('* <strong class="error">%s.</strong>', a)
table.insert(infos, info)
end
end
-- Testa se existe um ponto de acesso principal. Se existir, testa se o primeiro indicador do campo 245 condiz com essa realidade
local f245ind1 = f245:sub(1, 1) or ""
if accessPointPresence == 0 then
if f245ind1 == "1" then
a =
'Não houve um ponto de acesso principal nos campos 1XX, desse modo, o primeiro indicador do campo 245 deve ter o valor "0"'
info = string.format('* <strong class="error">%s.</strong>', a)
table.insert(infos, info)
end
else
if f245ind1 == "0" then
a =
'Houve um ponto de acesso principal nos campos 1XX, desse modo, o primeiro indicador do campo 245 deve ter o valor "1"'
info = string.format('* <strong class="error">%s.</strong>', a)
table.insert(infos, info)
end
end
-- 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 f240 =
mw.text.trim(frame:expandTemplate {title = "Field data string", args = {"240", "0", "0", fullpagename = target}}) or
""
if f240 ~= "" then
if f041 == "" then
a = "Normalmente, quando há um campo 240, deve haver um campo 041"
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][a-zA-Z][a-zA-Z]$") then
a = "É necessário informar o idioma por extenso ($l do campo 240) antecedido por um ponto no subcampo $a"
info = string.format('* <strong class="error">%s.</strong>', a)
table.insert(infos, info)
end
if not string.match(f240, "%.%s?%$l") then
a = "O subcampo $l do campo 240 necessita ser antecedido por um ponto no subcampo anterior"
info = string.format('* <strong class="error">%s.</strong>', a)
table.insert(infos, info)
end
else
a = "Normalmente, quando há um campo 240 $a, deve haver também um 240 $l. 240 $l não foi detectado"
info = string.format('* <strong class="error">%s.</strong>', a)
table.insert(infos, info)
end
if f240:sub(1, 1) == "0" then
a = "O título uniforme não será exibido"
info = string.format("* %s.", a)
table.insert(infos, info)
elseif f240:sub(1, 1) == "1" then
a = "O título uniforme será exibido"
info = string.format("* %s.", a)
table.insert(infos, info)
elseif f240:sub(1, 1) == "#" then
a = "Está faltando o primeiro indicador do campo 240"
info = string.format('* <strong class="error">%s.</strong>', a)
table.insert(infos, info)
else
a = "O primeiro indicador do campo 240 foi preenchido incorretamente"
info = string.format('* <strong class="error">%s.</strong>', a)
table.insert(infos, info)
end
if f240:sub(2, 2) == "#" then
a = "Está faltando o segundo indicador do campo 240"
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}}), "[/:=.]$", "")
a = "O título uniforme será alfabetado como"
b = ucfirst(f240a:sub(f240:sub(2, 2) + 1))
info = string.format('* %s "<b>%s</b>".', a, b)
table.insert(infos, info)
end
end
-- Informa se o título receberá o ponto de acesso principal ou secundário
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
-- 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
-- Testa se existe espaço antes da pontuação "/", ":" e "=" no final do subcampo $a e $b
if string.match(f245a, "[a-zA-Z][/:=]$") then
a = "Inclua um espaço antes da pontuação (ao final do subcampo $a do campo 245)"
info = string.format('* <strong class="error">%s.</strong>', a)
table.insert(infos, info)
end
-- Testa se o subcampo $b começa com letras maiúsculas
local f245b = frame:expandTemplate {title = "Select", args = {"245", "b", target}} or ""
if f245b ~= "" then
if string.match(f245b, "[a-zA-Z][/:=]$") then
a = "Inclua um espaço antes da pontuação (ao final do subcampo $b do campo 245"
info = string.format('* <strong class="error">%s.</strong>', a)
table.insert(infos, info)
end
if string.match(f245b, "^[A-Z]") then
a = "Normalmente, o início de um subtítulo (245 $b) começa com letras minúsculas"
info = string.format('* <strong class="error">%s.</strong>', a)
table.insert(infos, info)
end
-- Testa se existe mais de um subcampo $b no 245
if string.match(f245, "%$b.*%$b") then
a = "Há mais de um subcampo $b no campo 245. O subcampo $b não é repetível"
info = string.format('* <strong class="error">%s.</strong>', a)
table.insert(infos, info)
end
end
-- Testa se o subcampo $c está presente
local f245c = frame:expandTemplate {title = "Select", args = {"245", "c", target}} or ""
if f245c ~= "" then
-- Testa se existe espaço antes do ponto e vírgula na indicação de responsabilidade, subcampo $c do 245
if string.match(f245c, "[a-zA-Z.];") then
a = "Inclua um espaço antes do ponto e vírgula (subcampo $c do campo 245)"
info = string.format('* <strong class="error">%s.</strong>', a)
table.insert(infos, info)
end
-- Testa se existe "/" antes do subcampo $c do campo 245
if string.match(f245, "[a-zA-Z]%s?%$c") then
a = 'É necessária a pontuação que precede a indicação de responsabilidade (" / ") no campo 245'
info = string.format('* <strong class="error">%s.</strong>', a)
table.insert(infos, info)
end
-- Testa se há ": $c"
if string.match(f245, ":%s?%$c") then
a =
'Ou o subtítulo foi colocado no subcampo $c, ou a pontuação que precede a indicação de responsabilidade (" / ") não foi informada corretamente (campo 245).'
info = string.format('* <strong class="error">%s.</strong>', a)
table.insert(infos, info)
end
-- Testa se o subcampo $c termina em "-"
if string.match(f245, "%-$") then
a = "Nunca inclua hifens de separação de áreas do AACR2 em registros MARC 21. Reveja a pontuação (campo 245)"
info = string.format('* <strong class="error">%s.</strong>', a)
table.insert(infos, info)
end
-- Testa se existe mais de um subcampo $c no 245
if string.match(f245, "%$c.*%$c") then
a = "Há mais de um subcampo $c no campo 245. O subcampo $c não é repetível"
info = string.format('* <strong class="error">%s.</strong>', a)
table.insert(infos, info)
end
-- Testa se existe mais de 3 vírgulas no campo 245 $c
if string.match(f245c, "[A-Za-zÀ-ü ]+,[A-Za-zÀ-ü ]+,[A-Za-zÀ-ü ]+,") then
a = 'Parece haver mais de 3 pessoas na indicação de responsabilidade (245 $c), use " ... [et al.]"'
info = string.format('* <strong class="error">%s.</strong>', a)
table.insert(infos, info)
end
-- Testa se existe a sintaxe "*...[et. "
if string.match(f245c, "[a-zA-ZÀ-ü]%.%.%.%[et.?%s") then
a = 'No campo 245, o espaçamento correto é " ... [et al.]"'
info = string.format('* <strong class="error">%s.</strong>', a)
table.insert(infos, info)
end
else
a = "Está faltando o subcampo $c do campo 245"
info = string.format('* <strong class="error">%s.</strong>', a)
table.insert(infos, info)
end
-- Testa se existe espaço antes de "ed." (subcampo $a do 250)
local f250 =
mw.text.trim(frame:expandTemplate {title = "Field data string", args = {"250", "0", "0", fullpagename = target}}) or
""
if f250 ~= "" then
local f250a = frame:expandTemplate {title = "Select", args = {"250", "a", target}} or ""
if string.match(f250a, "%d%.?ed%.") then
a = 'Inclua um espaço antes da indicação "ed." (subcampo $a do campo 250)'
info = string.format('* <strong class="error">%s.</strong>', a)
table.insert(infos, info)
end
end
-- Testa se existe 260, se existir, verifica a pontuação final dos subcampos $a, $b e $c do campo 260
local f260 =
mw.text.trim(frame:expandTemplate {title = "Field data string", args = {"260", "0", "0", fullpagename = target}}) or
""
if f260 ~= "" then
local f260a = frame:expandTemplate {title = "Select", args = {"260", "a", target}} or ""
if f260a ~= "" then
if string.match(f260a, "[a-zA-ZÀ-ü%],]%s?$") then
a = 'Normalmente, o final do subcampo $a do campo 260 requer a seguinte pontuação " : "'
info = string.format('* <strong class="error">%s.</strong>', a)
table.insert(infos, info)
end
else
a = "Está faltando o subcampo $a do campo 260"
info = string.format('* <strong class="error">%s.</strong>', a)
table.insert(infos, info)
end
local f260b = frame:expandTemplate {title = "Select", args = {"260", "b", target}} or ""
if f260b ~= "" then
if string.match(f260b, "[a-zA-Z.]$") then
a =
'Normalmente, o final do subcampo $b do campo 260 requer uma das seguintes pontuações ", " ou " : ". Reveja a pontuação'
info = string.format('* <strong class="error">%s.</strong>', a)
table.insert(infos, info)
end
else
a = "Está faltando o subcampo $b do campo 260"
info = string.format('* <strong class="error">%s.</strong>', a)
table.insert(infos, info)
end
local f260c = frame:expandTemplate {title = "Select", args = {"260", "c", target}} or ""
if f260c ~= "" then
-- Testa se o subcampo $c é precedido ou não por ","
if string.match(f260, "[a-zA-ZÀ-ü%]][;:]%s?%$c") then
a = "O ano de publicação deve sempre ser precedido de uma vírgula. Reveja a pontuação (campo 260)"
info = string.format('* <strong class="error">%s.</strong>', a)
table.insert(infos, info)
end
if string.match(f260c, "[a-zA-ZÀ-ü0-9%]]$") then
a = "Nossa política de catalogação define que o subcampo $c do campo 260 deve terminar com um ponto"
info = string.format('* <strong class="error">%s.</strong>', a)
table.insert(infos, info)
end
else
a = "Está faltando o subcampo $c do campo 260"
info = string.format('* <strong class="error">%s.</strong>', a)
table.insert(infos, info)
end
end
-- Testa se existe espaço entre o número e a indicaçação de extensão do texto
local f300 =
mw.text.trim(frame:expandTemplate {title = "Field data string", args = {"300", "0", "0", fullpagename = target}}) or
""
if f300 ~= "" then
local f300a = frame:expandTemplate {title = "Select", args = {"300", "a", target}} or ""
if f300a ~= "" then
if string.match(f300a, "%d[a-z]%.") then
a = 'Inclua um espaço entre o número e a indicação "p.", "f." ou "v." (subcampo $a do campo 300)'
info = string.format('* <strong class="error">%s.</strong>', a)
table.insert(infos, info)
end
-- Testa se existe espaço entre "p." e ";"
if string.match(f300a, "%.[:;]") then
a = 'Inclua um espaço entre a indicação "p.", "f." ou "v." e a pontuação final (subcampo $a do campo 300)'
info = string.format('* <strong class="error">%s.</strong>', a)
table.insert(infos, info)
end
-- Testa se existe "il." no subcampo $a (deve estar no subcampo $b)
if string.match(f300a, "il%.") then
a = 'Ilustrações e outros detalhes físicos devem ir no subcampo $b do campo 300, antecedidos de " : "'
info = string.format('* <strong class="error">%s.</strong>', a)
table.insert(infos, info)
end
end
local f300b = frame:expandTemplate {title = "Select", args = {"300", "b", target}} or ""
if f300b ~= "" then
-- Testa se existe ".;" no subcampo $b do campo 300
if string.match(f300b, "%.;") then
a = "Inclua um espaço entre o ponto e o ponto e vírgula (campo 300, subcampo $b)"
info = string.format('* <strong class="error">%s.</strong>', a)
table.insert(infos, info)
end
if string.match(f300b, "il,") then
a = "Falta um ponto na abreviatura para ilustrações (il.)"
info = string.format('* <strong class="error">%s.</strong>', a)
table.insert(infos, info)
end
end
local f300c = frame:expandTemplate {title = "Select", args = {"300", "c", target}} or ""
if f300c ~= "" then
-- Testa se a sintaxe das dimensões está correta
if string.match(f300c, "%d[a-z]") then
a =
'Atenção, a sintaxe correta para a dimensão é: "NN cm" ou, menos frequentemente, "NN x NN cm" (subcampo $c do campo 300)'
info = string.format('* <strong class="error">%s.</strong>', a)
table.insert(infos, info)
end
else
a = "Não foi detectado um subcampo $c no campo 300"
info = string.format('* <strong class="error">%s.</strong>', a)
table.insert(infos, info)
end
-- Testa se a pontuação antes da dimensão é ".", "," ou ":"
if string.match(f300, "[.,:]%s?%$c") then
a = 'A pontuação que precede a dimensão (300 $c) deve ser " ; "'
info = string.format('* <strong class="error">%s.</strong>', a)
table.insert(infos, info)
end
-- Testa se o subcampo $c termina em "-"
if string.match(f300, "%-$") then
a = "Nunca inclua hifens de separação de áreas do AACR2 em registros MARC 21. Reveja a pontuação (campo 300)"
info = string.format('* <strong class="error">%s.</strong>', a)
table.insert(infos, info)
end
end
local f440 =
mw.text.trim(frame:expandTemplate {title = "Field data string", args = {"440", "0", "0", fullpagename = target}}) or
""
if f440 ~= "" then
a = "O campo 440 é obsoleto. Mova seu conteúdo para o campo 490"
info = string.format('* <strong class="error">%s.</strong>', a)
table.insert(infos, info)
end
-- Testa se existem indicadores, parênteses no subcampo $a do campo 490 e se existe ";" antes da numeração da série
local f490 =
mw.text.trim(frame:expandTemplate {title = "Field data string", args = {"490", "0", "0", fullpagename = target}}) or
""
if f490 ~= "" then
if f490:sub(2, 2) ~= "#" then
a = "O segundo indicador do campo 490 foi preenchido, porém, ele não deve ser preenchido"
info = string.format('* <strong class="error">%s.</strong>', a)
table.insert(infos, info)
end
local f490a = frame:expandTemplate {title = "Select", args = {"490", "a", target}} or ""
if f490a ~= "" then
if string.match(f490a, "^%(") then
a = "Segundo as orientações do MARC 21, não inclua os parênteses no campo 490 ou 830"
info = string.format('* <strong class="error">%s.</strong>', a)
table.insert(infos, info)
end
end
local f490v = frame:expandTemplate {title = "Select", args = {"490", "v", target}} or ""
if f490v ~= "" then
if not string.match(f490, ";%s?%$v") then
a = "É necessária a pontuação que precede a numeração da série (490, $v)"
info = string.format('* <strong class="error">%s.</strong>', a)
table.insert(infos, info)
end
end
-- Testa a consistência entre o indicador do 490 e a presença do campo 830
local f830 =
mw.text.trim(
frame:expandTemplate {title = "Field data string", args = {"830", "0", "0", fullpagename = target}}
) or ""
if f490:sub(1, 1) == "#" then
a = "Está faltando o primeiro indicador do campo 490"
info = string.format('* <strong class="error">%s.</strong>', a)
table.insert(infos, info)
elseif f490:sub(1, 1) == "1" then
if f830 == "" then
a =
"Foi especificado um ponto de acesso secundário para a série (490, primeiro indicador com valor 1), porém, um campo 830 não foi informado"
info = string.format('* <strong class="error">%s.</strong>', a)
table.insert(infos, info)
end
elseif f490:sub(1, 1) == "0" then
if f830 ~= "" then
a =
"O primeiro indicador do campo 490 indica que não foi gerado um ponto de acesso para a série, porém, um campo 830 foi informado"
info = string.format('* <strong class="error">%s.</strong>', a)
table.insert(infos, info)
end
else
a = "O primeiro indicador do campo 490 foi preenchido incorretamente"
info = string.format('* <strong class="error">%s.</strong>', a)
table.insert(infos, info)
end
end
-- Testa se a nota 500 acaba com "."
local f500 =
mw.text.trim(frame:expandTemplate {title = "Field data string", args = {"500", "0", "0", fullpagename = target}}) or
""
if f500 ~= "" then
if string.match(f500, "[a-zA-ZÀ-ü0-9:;-]$") then
a = "Nossa política de catalogação define que as notas devem terminar com um ponto (500)"
info = string.format('* <strong class="error">%s.</strong>', a)
table.insert(infos, info)
end
end
-- Testa se a nota 504 acaba com "." e se existe uso de maiúsculas no meio da nota
local f504 =
mw.text.trim(frame:expandTemplate {title = "Field data string", args = {"504", "0", "0", fullpagename = target}}) or
""
if f504 ~= "" then
if string.match(f504, "[a-zA-ZÀ-ü0-9]$") then
a = "Nossa política de catalogação define que as notas devem terminar com um ponto (504)"
info = string.format('* <strong class="error">%s.</strong>', a)
table.insert(infos, info)
end
-- Testa se existe uso de maiúsculas no meio da nota 504
if string.match(f504, ".*%s[A-Z]") then
a = "Verifique o uso de maiúsculas na nota do campo 504"
info = string.format('* <strong class="error">%s.</strong>', a)
table.insert(infos, info)
end
end
local f600 =
mw.text.trim(frame:expandTemplate {title = "Field data string", args = {"600", "0", "0", fullpagename = target}}) or
""
-- Testa os indicadores dos campos 6XX
if f600 ~= "" then
if f600:sub(1, 1) == "#" then
a = "Está faltando o primeiro indicador do campo 600"
info = string.format('* <strong class="error">%s.</strong>', a)
table.insert(infos, info)
end
if f600:sub(2, 2) ~= "4" then
a = 'Nossa política de catalogação define que o segundo indicador do campo 600 deve ser sempre "4"'
info = string.format('* <strong class="error">%s.</strong>', a)
table.insert(infos, info)
end
-- Testa se existe "," no subcampo $a (Nome, Sobrenome)
local f600a = frame:expandTemplate {title = "Select", args = {"600", "a", target}} or ""
if f600a ~= "" then
if not string.match(f600a, ".*,.") then
a = "Em pontos de acesso, o nome pessoal deve ser invertido (Nome, Sobrenome). Verifique o campo 600"
info = string.format('* <strong class="error">%s.</strong>', a)
table.insert(infos, info)
end
if string.match(f600a, "[a-zÀ-ü],[A-ZÀ-ü]") then
a = "Falta espaço após a vírgula. Verifique o campo 600"
info = string.format('* <strong class="error">%s.</strong>', a)
table.insert(infos, info)
end
end
local f600q = frame:expandTemplate {title = "Select", args = {"600", "q", target}} or ""
if f600q ~= "" then
if not string.match(f600q, "^%(") then
a = "O subcampo $q do campo 600 necessita parênteses"
info = string.format('* <strong class="error">%s.</strong>', a)
table.insert(infos, info)
end
end
end
local f610 =
mw.text.trim(frame:expandTemplate {title = "Field data string", args = {"610", "0", "0", fullpagename = target}}) or
""
if f610 ~= "" then
if f610:sub(1, 1) == "#" then
a = "Está faltando o primeiro indicador do campo 610"
info = string.format('* <strong class="error">%s.</strong>', a)
table.insert(infos, info)
end
if f610:sub(2, 2) ~= "4" then
a = 'Nossa política de catalogação define que o segundo indicador do campo 610 deve ser sempre "4"'
info = string.format('* <strong class="error">%s.</strong>', a)
table.insert(infos, info)
end
end
local f611 =
mw.text.trim(frame:expandTemplate {title = "Field data string", args = {"611", "0", "0", fullpagename = target}}) or
""
if f611 ~= "" then
if f611:sub(1, 1) == "#" then
a = "Está faltando o primeiro indicador do campo 611"
info = string.format('* <strong class="error">%s.</strong>', a)
table.insert(infos, info)
end
if f611:sub(2, 2) ~= "4" then
a = 'Nossa política de catalogação define que o segundo indicador do campo 611 deve ser sempre "4"'
info = string.format('* <strong class="error">%s.</strong>', a)
table.insert(infos, info)
end
end
local f630 =
mw.text.trim(frame:expandTemplate {title = "Field data string", args = {"630", "0", "0", fullpagename = target}}) or
""
if f630 ~= "" then
if f630:sub(1, 1) == "#" then
a = "Está faltando o primeiro indicador do campo 630"
info = string.format('* <strong class="error">%s.</strong>', a)
table.insert(infos, info)
end
if f630:sub(2, 2) ~= "4" then
a = 'Nossa política de catalogação define que o segundo indicador do campo 630 deve ser sempre "4"'
info = string.format('* <strong class="error">%s.</strong>', a)
table.insert(infos, info)
end
end
local f650 =
mw.text.trim(frame:expandTemplate {title = "Field data string", args = {"650", "0", "0", fullpagename = target}}) or
""
if f650 ~= "" then
if f650:sub(1, 1) ~= "0" then
a = 'Nossa política de catalogação define que o primeiro indicador do campo 650 deve ser sempre "0"'
info = string.format('* <strong class="error">%s.</strong>', a)
table.insert(infos, info)
end
if f650:sub(2, 2) ~= "4" then
a = 'Nossa política de catalogação define que o segundo indicador do campo 650 deve ser sempre "4"'
info = string.format('* <strong class="error">%s.</strong>', a)
table.insert(infos, info)
end
-- Testa se os assuntos começam com letra minúscula
if string.match(f650, "%$[axzy][a-zà-ü]") then
a = "Os assuntos principais e suas subdivisões devem começar com letra maiúscula"
info = string.format('* <strong class="error">%s.</strong>', a)
table.insert(infos, info)
end
-- Testa se um subcampo termina em "-"
if string.match(f650, "%-%s?%$") then
a = "Nunca inclua hifens entre termos de assuntos"
info = string.format('* <strong class="error">%s.</strong>', a)
table.insert(infos, info)
end
end
local f651 =
mw.text.trim(frame:expandTemplate {title = "Field data string", args = {"651", "0", "0", fullpagename = target}}) or
""
if f651 ~= "" then
if f651:sub(1, 1) ~= "#" then
a = 'Nossa política de catalogação define que o primeiro indicador do campo 651 deve ser sempre "#"'
info = string.format('* <strong class="error">%s.</strong>', a)
table.insert(infos, info)
end
if f651:sub(2, 2) ~= "4" then
a = 'Nossa política de catalogação define que o segundo indicador do campo 651 deve ser sempre "4"'
info = string.format('* <strong class="error">%s.</strong>', a)
table.insert(infos, info)
end
end
-- Testa os pontos de acesso secundários, tal como os principais
local f700 =
mw.text.trim(frame:expandTemplate {title = "Field data string", args = {"700", "0", "0", fullpagename = target}}) or
""
if f700 ~= "" then
info = "Um ponto de acesso secundário foi dado a uma <b>pessoa</b>"
if f700:sub(1, 1) == "0" then
a = "e a entrada começa pelo seu <b>primeiro nome</b>"
info = string.format("* %s %s.", info, a)
table.insert(infos, info)
elseif f700:sub(1, 1) == "1" then
a = "e a entrada começa pelo seu <b>sobrenome</b>"
info = string.format("* %s %s.", info, a)
table.insert(infos, info)
elseif f700:sub(1, 1) == "3" then
a = "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 f700:sub(1, 1) == "#" then
a = "o primeiro indicador não foi preenchido"
info = string.format('* %s, porém, <strong class="error">%s.</strong>', info, a)
table.insert(infos, info)
else
a = "o primeiro indicador foi preenchido incorretamente"
info = string.format('* %s, porém, <strong class="error">%s.</strong>', info, a)
table.insert(infos, info)
end
if f700:sub(2, 2) ~= "#" then
a = "O segundo indicador do campo 700 foi preenchido, porém, ele não deve ser preenchido"
info = string.format('* <strong class="error">%s.</strong>', a)
table.insert(infos, info)
end
-- Testa se existe mais de um subcampo $a no mesmo campo 700
local exist700 = frame:expandTemplate {title = "Exist", args = {"700", target}} or false
if exist700 == "yes" then
if string.match(f700, "%$a.*%$a.-$") then
a = "Há mais de um subcampo $a no campo 700. O subcampo $a não é repetível"
info = string.format('* <strong class="error">%s.</strong>', a)
table.insert(infos, info)
end
-- testa se existe "," no subcampo $a (Nome, Sobrenome)
local f700a = frame:expandTemplate {title = "Select", args = {"700", "a", target}}
if f700a ~= "" then
if not string.match(f700a, ".-,.") then
a = "Em pontos de acesso, o nome pessoal deve ser invertido (Nome, Sobrenome). Verifique o campo 700"
info = string.format('* <strong class="error">%s.</strong>', a)
table.insert(infos, info)
end
if string.match(f700a, "[a-zÀ-ü],[A-ZÀ-ü]") then
a = "Falta espaço após a vírgula. Verifique o campo 700"
info = string.format('* <strong class="error">%s.</strong>', a)
table.insert(infos, info)
end
end
local f700q = frame:expandTemplate {title = "Select", args = {"700", "q", target}}
if f700q ~= "" then
if not string.match(f700q, "^%(") then
a = "O subcampo $q do campo 700 necessita parênteses"
info = string.format('* <strong class="error">%s.</strong>', a)
table.insert(infos, info)
end
end
end
end
local f710 =
mw.text.trim(frame:expandTemplate {title = "Field data string", args = {"710", "0", "0", fullpagename = target}}) or
""
if f710 ~= "" then
info = "Um ponto de acesso secundário foi dado a uma <b>entidade coletiva</b>"
if f710:sub(1, 1) == "0" then
a = "e a entrada começa por um <b>nome invertido</b>"
info = string.format("* %s %s.", info, a)
table.insert(infos, info)
elseif f710:sub(1, 1) == "1" then
a = "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 f710:sub(1, 1) == "2" then
a = "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 f710:sub(1, 1) == "#" then
a = "o primeiro indicador não foi preenchido"
info = string.format('* %s, porém, <strong class="error">%s.</strong>', info, a)
table.insert(infos, info)
else
a = "o primeiro indicador foi preenchido incorretamente"
info = string.format('* %s, porém, <strong class="error">%s.</strong>', info, a)
table.insert(infos, info)
end
if f710:sub(2, 2) ~= "#" then
a = "O segundo indicador do campo 710 foi preenchido, porém, ele não deve ser preenchido"
info = string.format('* <strong class="error">%s.</strong>', a)
table.insert(infos, info)
end
end
local f711 =
mw.text.trim(frame:expandTemplate {title = "Field data string", args = {"711", "0", "0", fullpagename = target}}) or
""
if f711 ~= "" then
info = "Um ponto de acesso secundário foi dado a um <b>evento</b>"
if f711:sub(1, 1) == "0" then
a = "e a entrada começa por um <b>nome invertido</b>"
info = string.format("* %s %s.", info, a)
table.insert(infos, info)
elseif f711:sub(1, 1) == "1" then
a = "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 f711:sub(1, 1) == "2" then
a = "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 f711:sub(1, 1) == "#" then
a = "o primeiro indicador não foi preenchido"
info = string.format('* %s, porém, <strong class="error">%s.</strong>', info, a)
table.insert(infos, info)
else
a = "o primeiro indicador foi preenchido incorretamente"
info = string.format('* %s, porém, <strong class="error">%s.</strong>', info, a)
table.insert(infos, info)
end
if f711:sub(2, 2) ~= "#" then
a = "O segundo indicador do campo 711 foi preenchido, porém, ele não deve ser preenchido"
info = string.format('* <strong class="error">%s.</strong>', a)
table.insert(infos, info)
end
end
-- Testa os indicadores do campo 830
local f830 =
mw.text.trim(frame:expandTemplate {title = "Field data string", args = {"830", "0", "0", fullpagename = target}}) or
""
if f830 ~= "" then
if f830:sub(1, 1) ~= "#" then
a = "O primeiro indicador do campo 830 foi preenchido, porém, ele não deve ser preenchido"
info = string.format('* <strong class="error">%s.</strong>', a)
table.insert(infos, info)
end
if f830:sub(2, 2) == "#" then
a = "O segundo indicador do campo 830 precisa ser preenchido"
info = string.format('* <strong class="error">%s.</strong>', a)
table.insert(infos, info)
end
local f830v = frame:expandTemplate {title = "Select", args = {"830", "v", target}} or ""
if f830v ~= "" then
if not string.match(f830v, ";%s?%$v") then
a = "É necessária a pontuação que precede a numeração da série (830, $v)"
info = string.format('* <strong class="error">%s.</strong>', a)
table.insert(infos, info)
end
end
end
local f856 =
mw.text.trim(frame:expandTemplate {title = "Field data string", args = {"856", "0", "0", fullpagename = target}}) or
""
if f856 ~= "" then
if f856:sub(1, 1) ~= "4" then
a = 'O primeiro indicador do campo 856 precisa ter o valor "4"'
info = string.format('* <strong class="error">%s.</strong>', a)
table.insert(infos, info)
end
local f856a = frame:expandTemplate {title = "Select", args = {"856", "a", target}} or ""
if f856a ~= "" then
a = "Normalmente, o subcampo utilizado no 856 é o $u, não o $a"
info = string.format('* <strong class="error">%s.</strong>', a)
table.insert(infos, info)
end
end
-- Testa por inteiro o registro de modo a acusar: "," ou o "." precedido de espaço; designadores de subcampos errados
local isoRecord =
frame:callParserFunction {
name = "#ask:[[-Has subobject::" .. "B000004" .. "]][[Field data::+]]",
args = {
"?Field data",
format = "plainlist",
link = "none",
headers = "hide",
mainlabel = "-",
outro = "",
sep = "",
valuesep = "",
propsep = ""
}
} or ""
if string.match(isoRecord, "%s[.,][^.]") then
a = "Pontos finais ou vírgulas nunca devem ser precedidos por um espaço"
info = string.format('* <strong class="error">%s.</strong>', a)
table.insert(infos, info)
end
if string.match(isoRecord, "%$[A-Z]") then
a = "Não são permitidos designadores de subcampos com letras maiúsculas"
info = string.format('* <strong class="error">%s.</strong>', a)
table.insert(infos, info)
end
end -- end if 245
return table.concat(infos, "\n")
end
return p