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

Ir para navegação Ir para pesquisar
sem sumário de edição
Sem resumo de edição
Sem resumo de edição
 
function p.BibRules( frame )
-- Define o alvo das regras
local target = frame:getParent().args[1]
if target == '' or target == nil then
target = mw.title.getCurrentTitle().prefixedText
end
-- Semantic Scribunto foi carregado?
if not mw.smw then
return "mw.smw module not found"
end
-- Define variáveis básicas
local test, info, queryResult
local infos = {}
-- Somente realize as análises de existir o campo 245
if frame:expandTemplate{ title = 'Exist', args = { '245' } } ~= '' then
-- Record status
info = '* Internamente, este registro é identificado pelo código "' .. f001 .. '"; para sistemas externos, o código é "(' .. frame:expandTemplate{ title = 'Field data string', args = { '003', '0', '', property = 'Control field data' } } .. ')' .. f001 .. '".'
table.insert(infos, info)
 
-- Campo 005
queryResult = mw.smw.ask( '[[' .. target .. ']]|?Creation date#-F[l, d \\d\\e F \\d\\e Y]|headers=hide|mainlabel=-' )
local accessPointcreationDate = ""
if type( queryResult ) == "table" then
for _, row in pairs( queryResult ) do
for _, data in pairs( row ) do
accessPointcreationDate = data
end
end
end
 
queryResult = mw.smw.ask( '[[' .. target .. ']]|?Modification date#-F[l, d \\d\\e F \\d\\e Y]|headers=hide|mainlabel=-' )
local modificationDate = ""
end
end
info = "* O registro foi criado em: " .. accessPointcreationDate .. ". Sua última transação foi em: " .. modificationDate .. "."
 
info = "* O registro foi criado em: " .. accessPoint .. ". Sua última transação foi em: " .. modificationDate .. "."
table.insert(infos, info)
 
-- Campo 008
local invalidCode = "<strong class='error'>código inválido para o local de publicação</strong>"
["   "] = "<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' } }
 
if string.match(f008pubPlace, '^[A-Z]') then
info = "* <strong class='error'>O uso de maiúsculas não é permitido no campo 008, local de publicação.</strong>"
table.insert(infos, info)
elseif pubPlace_tbl[f008pubPlace] then
info = "* O item possui a seguinte origem: " .. tostring(pubPlace_tbl[f008pubPlace]) .. "."
else table.insert(infos, info)
else
info = "* O item possui a seguinte origem: " .. f008pubPlace .. "."
table.insert(infos, info)
end
invalidCode = "<strong class='error'>código inválido para o idioma do(campo 008 ou subcampo $h do campo 041)</strong>"
table.insert(infos, info)
 
local invalidCode = "<strong class='error'>código inválido para o idioma, campo 008</strong>"
local lang_tbl =
{
["   "] = "<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' } }
 
if string.match(f008lang, '^[A-Z]') then
info = "* <strong class='error'>O uso de maiúsculas não é permitido no campo 008, idioma.</strong>"
table.insert(infos, info)
elseif lang_tbl[f008lang] then
info = "* Majoritariamente, o item se expressa no seguinte idioma: " .. tostring(lang_tbl[f008lang])
else table.insert(infos, info)
else
info = "* Majoritariamente, o item se expressa no seguinte idioma: " .. f008lang
table.insert(infos, info)
end
-- seSe existe o campo 041, mostra "(traduzido do... )" na mesma linha do idioma presente no 008
 
test = frame:expandTemplate{ title = 'Exist', args = { '041' } } or false
-- se existe o campo 041, mostra "(traduzido do...)" na mesma linha do idioma presente no 008
test = frame:expandTemplate{ title = 'Exist', args = { '041' } } or false
if test ~= '' then
 
test = frame:expandTemplate{ title = 'Field data string', args = { '041', '0', '1' } } or false
 
if test == '1' then
invalidCode = "<strong class='error'>código inválido para o idioma do subcampo $h do campo 041</strong>"
local f041h = frame:expandTemplate{ title = 'Select', args = { '041', 'h' } }
f041h = lang_tbl[f041h] or f041h
 
info = info .. "&#32;(traduzido do " .. f041h .. ")."
table.insert(infos, info)
end
end
-- testaTesta se existe(m) ISBN(s) inválido(s)
table.insert(infos, info)
 
-- testa se existe(m) ISBN(s) inválido(s)
test = frame:expandTemplate{ title = 'Exist', args = { '020' } } or false
if test ~= '' then
table.insert(infos, info)
end
-- testaTesta se existe(m) hifen(s) ou x minúsculo no ISBN
 
-- 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 = ""
end
end
 
if string.match(f020, '-') then
info = "* <strong class='error'>O ISBN não pode conter hifens. Apenas números e \"X\" maiúsculo.</strong>"
table.insert(infos, info)
end
-- testaTesta se há indicadores no campo 020
if string.sub(f020, 1, 1) ~= '#' then
info = "* <strong class='error'>O primeiro indicador do campo 020 foi preenchido, porém, ele não deve ser preenchido.</strong>"
end
end
-- testaTesta o uso de maiúsculas no campo 041
test = frame:expandTemplate{ title = 'Exist', args = { '041' } } or false
if test ~= '' then
end
end
-- Verifica a presença de pontos de acesso principais 1XX
--queryResult = mw.smw.ask( '[[' .. target .. '#100||' .. target .. '#110||' .. target .. '#111||' .. target .. '#130]]' )
-- 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 = '-' }
}
-- aA seguir, testa se há subcampo $b e se há espaço no subcampo $c do campo 090
test = frame:expandTemplate{ title = 'Exist', args = { '090' } } or false
if test ~= '' then
table.insert(infos, info)
end
-- aA seguir, testa se não foi esquecida a letra do tíulo na notação de Cutter, caso haja um ponto de acesso 1XX
if tonumber(accessPointPresence) >= 1 and string.match(test, '[0-9]$') then
info = "* <strong class='error'>Falta a letra do título na notação de Cutter.</strong>"
table.insert(infos, info)
end
test = frame:expandTemplate{ title = 'Select', args = { '090', 'c' } } or false
end
end
-- aA seguir, testa (conta) se existe mais de um ponto de acesso principal
local f100existance = frame:expandTemplate{ title = 'Exist', args = { '100'} }
if tonumber(accessPointPresence) > 1 or f100existance == 'multiple' then
table.insert(infos, info)
end
-- testaTesta se existe ", " no subcampo $a (Nome, Sobrenome)
local f100a = frame:expandTemplate{ title = 'Select', args = { '100', 'a' } }
if f100a ~= '' then
end
end
-- A seguir, testa se existe um ponto de acesso principal 110
local f110existance = frame:expandTemplate{ title = 'Exist', args = { '110'} }
local f110 = ''
if f110existance ~= '' then
local f110 = frame:expandTemplate{ title = 'Field data string', args = { '110', '0', '0' } }
info = "* O ponto de acesso principal foi dado a uma '''entidade coletiva'''"
if f110:sub(1, 1) == "0" then

Menu de navegação