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

sem sumário de edição
Sem resumo de edição
Sem resumo de edição
local infos = {}
-- Funções básicas
local function ucfirst(str)
return (str:gsub('^%l', string.upper))
end
-- Somente realize as análises de existir o campo 245
iflocal f245 = mw.text.trim( frame:expandTemplate {title = 'ExistField data string', args = {'245', '0', '0', fullpagename = target}} ~=) or '' then
if f245 ~= '' then
-- Record status
test = frame:expandTemplate {title = 'Field data string', args = {'000', '5', '1', property = 'Leader', fullpagename = target}} or false
end
-- Se existe o campo 041, mostra '(traduzido do... )' na mesma linha do idioma presente no 008
local f041existancef041 = mw.text.trim ( frame:expandTemplate {title = 'ExistField data string', args = {'041', '0', '0', fullpagename = target}} or '')
if f041existancef041 ~= '' then
if f041:sub(2, 2) == '1' then
test = mw.text.trim ( frame:expandTemplate {title = 'Field data string', args = {'041', '0', '1', fullpagename = target}} )
if test == '1' then
local f041h = frame:expandTemplate {title = 'Select', args = {'041', 'h', target}}
f041h = lang_tbl[f041h] or f041h
table.insert(infos, info)
-- Testa se existe(m) ISBN(s) inválido(s)
testlocal f020 = mw.text.trim( frame:expandTemplate {title = 'ExistField data string', args = {'020090', '0', '0', fullpagename = target}} ) or false''
if testf020 ~= '' then
testlocal printedIsbn = frame:expandTemplate {title = 'Print ISBN'} or false
if string.match(testprintedIsbn, "error") then
a = 'ISBN inválido, por favor, reveja os números informados'
info = string.format( '* <strong class="error">%s.</strong>', a )
-- Testa se existe(m) hifen(s) ou x minúsculo no ISBN
queryResult = mw.smw.ask('[[' .. target .. '#020]]|?Field data#|headers=hide|mainlabel=-')
local f020 = ''
if type(queryResult) == 'table' then
for _, row in pairs(queryResult) do
end
-- Testa se há indicadores no campo 020
if string.f020:sub(f020, 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 string.f020:sub(f020, 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 )
end
-- Testa o uso de maiúsculas no campo 041
if f041existancef041 ~= '' then
if f041:sub(1, 1) == '#' then
test = mw.text.trim ( frame:expandTemplate {title = 'Field data string', args = {'041', '0', '1', fullpagename = target}} )
if test == '#' 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
testlocal f041a = frame:expandTemplate {title = 'Select', args = {'041', 'a', target}} or false
if string.match(testf041a, '^[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 )
accessPointPresence = tonumber( accessPointPresence )
-- Testa se há subcampo $b e se há espaço no subcampo $c do campo 090
testlocal f090 = mw.text.trim( frame:expandTemplate {title = 'ExistField data string', args = {'090', '0', '0', fullpagename = target}} ) or false''
if testf090 ~= '' then
testlocal f090b = frame:expandTemplate {title = 'Select', args = {'090', 'b', target}} or false''
if testf090b == '' then
a = 'Está faltando o subcampo $b do campo 090 (notação de Cutter)'
info = string.format( '* <strong class="error">%s.</strong>', a )
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(testf090b, '[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
testlocal f090c = frame:expandTemplate {title = 'Select', args = {'090', 'c', target}} or false''
if string.match(testf090c, '%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 )
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
info = string.format( '* %s, porém, <strong class="error">%s.</strong>', info, a )
table.insert(infos, info)
elseifelse
f100:sub(1, 1) == '2' or f100:sub(1, 1) == '4' or f100:sub(1, 1) == '5' or f100:sub(1, 1) == '6' or
f100:sub(1, 1) == '7' or
f100:sub(1, 1) == '8' or
f100:sub(1, 1) == '9'
then
a = 'o primeiro indicador foi preenchido incorretamente'
info = string.format( '* %s, porém, <strong class="error">%s.</strong>', info, a )
end
-- A seguir, testa se existe um ponto de acesso principal 110
local f110existancef110 = mw.text.trim( frame:expandTemplate {title = 'ExistField data string', args = {'110', '0', '0', fullpagename = target}} or '' )
if f110existancef110 ~= '' then
local f110 = mw.text.trim( frame:expandTemplate {title = 'Field data string', args = {'110', '0', '0', fullpagename = target}} or '' )
info = 'O ponto de acesso principal foi dado a uma <b>entidade coletiva</b>'
if f110:sub(1, 1) == '0' then
info = string.format( '* %s, porém, <strong class="error">%s.</strong>', info, a )
table.insert(infos, info)
elseifelse
f110:sub(1, 1) == '3' or f110:sub(1, 1) == '4' or f110:sub(1, 1) == '5' or f110:sub(1, 1) == '6' or
f110:sub(1, 1) == '7' or
f110:sub(1, 1) == '8' or
f110:sub(1, 1) == '9'
then
a = 'o primeiro indicador foi preenchido incorretamente'
info = string.format( '* %s, porém, <strong class="error">%s.</strong>', info, a )
end
-- A seguir, testa se existe um ponto de acesso principal 111
local f111existancef111 = mw.text.trim( frame:expandTemplate {title = 'ExistField data string', args = {'111', '0', '0', fullpagename = target}} ) or ''
if f111existancef111 ~= '' then
local f111 = mw.text.trim( frame:expandTemplate {title = 'Field data string', args = {'111', '0', '0', fullpagename = target}} or '' )
info = 'O ponto de acesso principal foi dado a um <b>evento</b>'
if f111:sub(1, 1) == '0' then
info = string.format ( '* %s, porém, <strong class="error">%s.</strong>', info, a )
table.insert(infos, info)
elseifelse
f111:sub(1, 1) == '3' or f111:sub(1, 1) == '4' or f111:sub(1, 1) == '5' or f111:sub(1, 1) == '6' or
f111:sub(1, 1) == '7' or
f111:sub(1, 1) == '8' or
f111:sub(1, 1) == '9'
then
a = 'o primeiro indicador foi preenchido incorretamente'
info = string.format ( '* %s, porém, <strong class="error">%s.</strong>', info, a )
end
-- A seguir, testa se existe um ponto de acesso principal 130
local f130existancef130 = mw.text.trim( frame:expandTemplate {title = 'ExistField data string', args = {'130', '0', '0', fullpagename = target}} ) or ''
if f130existancef130 ~= '' then
local f130 = mw.text.trim( frame:expandTemplate {title = 'Field data string', args = {'130', '0', '0', fullpagename = target}} or '' )
info = 'O ponto de acesso principal foi dado a um <b>título uniforme</b>'
if f130:sub(1, 1) == '#' then
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
end
-- A seguir, testa se existe um ponto de acesso principal. Se existir, testa se o primeiro indicador do campo 245 condiz com essa realidade
local f245ind1 = mw.text.trimf245:sub( frame:expandTemplate {title = 'Field data string'1, args = {'245', '0', '1', fullpagename = target}} ) or ''
if accessPointPresence == 0 then
if f245ind1 == '1' then
end
-- a seguir, testa a relação entre a presença do campo 240 em relação a presença do campo 041 e a presença do subcampo $l
local f240existancef240 = mw.text.trim( frame:expandTemplate {title = 'ExistField data string', args = {'240', '0', '0', fullpagename = target}} ) or ''
if f240existancef240 ~= '' then
if f041 == '' then
local f240 = mw.text.trim( frame:expandTemplate {title = 'Field data string', args = {'240', '0', '0', fullpagename = target}} )
if f041existance == '' then
a = 'Normalmente, quando há um campo 240, deve haver um campo 041'
info = string.format( '* <strong class="error">%s.</strong>' , a )
end
-- A seguir, informa se o título receberá o ponto de acesso principal ou secundário
local f245 = mw.text.trim( frame:expandTemplate {title = 'Field data string', args = {'245', '0', '0', fullpagename = target}} ) or ''
if f245ind1 == '0' then
a = 'O título recebeu o <b>ponto de acesso principal</b>'
table.insert(infos, info)
end
-- A seguir, testa se foi preenchido o segundo indicador do 245, se foi, mostra como será a alfabetação, removendo a pontuação final do subcampo $a ('/',':','='' ou '.')
local f245a = frame:expandTemplate {title = 'Select', args = {'245', 'a', target}}
if f245:sub(2, 2) == '#' then
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)'
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.]"'
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 ''
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
test = frame:expandTemplate {title = 'Exist', args = {'700', target}} or false
if test == '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
-- a seguir, 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
end -- end if 245
return table.concat(infos, '\n'), '{{DISPLAYTITLE:Validar catalogação}}'
end