Módulo:BibRules: mudanças entre as edições
Ir para navegação
Ir para pesquisar
Sem resumo de edição |
Sem resumo de edição |
||
Linha 14: | Linha 14: | ||
end |
end |
||
local test, info, queryResult |
local test, info, queryResult |
||
local |
local f020 = {} |
||
if frame:expandTemplate{ title = 'Exist', args = { '245' } } ~= '' then |
if frame:expandTemplate{ title = 'Exist', args = { '245' } } ~= '' then |
||
-- Record status |
-- Record status |
||
Linha 20: | Linha 20: | ||
if test == 'n' then |
if test == 'n' then |
||
info = "* Segundo o Líder, este é um registro '''novo''' (não um alterado ou revisado, expandido, excluído, etc.)." |
info = "* Segundo o Líder, este é um registro '''novo''' (não um alterado ou revisado, expandido, excluído, etc.)." |
||
table.insert( |
table.insert(f020, info) |
||
elseif test == 'c' then |
elseif test == 'c' then |
||
info = "* Segundo o Líder, este é um registro '''alterado ou revisado''' (não um novo, expandido, excluído, etc.)." |
info = "* Segundo o Líder, este é um registro '''alterado ou revisado''' (não um novo, expandido, excluído, etc.)." |
||
table.insert( |
table.insert(f020, info) |
||
elseif test == 'a' or test == 'd' or test == 'p' then |
elseif test == 'a' or test == 'd' or test == 'p' then |
||
info = "* Segundo o Líder, este é um registro '''expandido''' ou '''excluído''' (não novo)." |
info = "* Segundo o Líder, este é um registro '''expandido''' ou '''excluído''' (não novo)." |
||
table.insert( |
table.insert(f020, info) |
||
end |
end |
||
-- Type of record |
-- Type of record |
||
Linha 32: | Linha 32: | ||
if test == 'a' then |
if test == 'a' then |
||
info = "* Segundo o Líder, este registro descreve um '''material textual'''." |
info = "* Segundo o Líder, este registro descreve um '''material textual'''." |
||
table.insert( |
table.insert(f020, info) |
||
end |
end |
||
-- Bibliographic level |
-- Bibliographic level |
||
Linha 38: | Linha 38: | ||
if test == 'm' then |
if test == 'm' then |
||
info = "* Segundo o Líder, este registro descreve um '''item monográfico''' (não parte de um item, não um item seriado, não uma coleção, etc.)." |
info = "* Segundo o Líder, este registro descreve um '''item monográfico''' (não parte de um item, não um item seriado, não uma coleção, etc.)." |
||
table.insert( |
table.insert(f020, info) |
||
end |
end |
||
-- Encoding level |
-- Encoding level |
||
Linha 44: | Linha 44: | ||
if test == '1' then |
if test == '1' then |
||
info = "* Segundo o Líder, este registro tem um nível '''completo''' de catalogação (mas o material não foi examinado)." |
info = "* Segundo o Líder, este registro tem um nível '''completo''' de catalogação (mas o material não foi examinado)." |
||
table.insert( |
table.insert(f020, info) |
||
else |
else |
||
info = "* Segundo o Líder, este registro tem um nível '''completo''' de catalogação (a descrição foi realizada com o material em mãos)." |
info = "* Segundo o Líder, este registro tem um nível '''completo''' de catalogação (a descrição foi realizada com o material em mãos)." |
||
table.insert( |
table.insert(f020, info) |
||
end |
end |
||
-- Descriptive cataloging form |
-- Descriptive cataloging form |
||
Linha 53: | Linha 53: | ||
if test == 'a' then |
if test == 'a' then |
||
info = "* Segundo o Líder, este registro possui uma catalogação '''compatível com as regras do AACR 2'''." |
info = "* Segundo o Líder, este registro possui uma catalogação '''compatível com as regras do AACR 2'''." |
||
table.insert( |
table.insert(f020, info) |
||
else |
else |
||
info = "* Segundo o Líder, este registro possui uma catalogação '''não compatível com as regras da ISBD'''." |
info = "* Segundo o Líder, este registro possui uma catalogação '''não compatível com as regras da ISBD'''." |
||
table.insert( |
table.insert(f020, info) |
||
end |
end |
||
-- Explica a sintaxe "(Biblioteca)NúmeroDeControle" |
-- Explica a sintaxe "(Biblioteca)NúmeroDeControle" |
||
local f001 = frame:expandTemplate{ title = 'Field data string', args = { '001', '0', '', property = 'Control field data' } } |
local f001 = frame:expandTemplate{ title = 'Field data string', args = { '001', '0', '', property = 'Control field data' } } |
||
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 .. '".' |
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( |
table.insert(f020, info) |
||
-- Campo 005 |
-- Campo 005 |
||
Linha 85: | Linha 85: | ||
info = "* O registro foi criado em: " .. creationDate .. ". Sua última transação foi em: " .. modificationDate .. "." |
info = "* O registro foi criado em: " .. creationDate .. ". Sua última transação foi em: " .. modificationDate .. "." |
||
table.insert( |
table.insert(f020, info) |
||
-- Campo 008 |
-- Campo 008 |
||
Linha 144: | Linha 144: | ||
info = "* O item possui a seguinte origem: " .. f008pubPlace .. "." |
info = "* O item possui a seguinte origem: " .. f008pubPlace .. "." |
||
end |
end |
||
table.insert( |
table.insert(f020, info) |
||
local invalidCode = "<strong class='error'>código inválido para o idioma, campo 008</strong>" |
local invalidCode = "<strong class='error'>código inválido para o idioma, campo 008</strong>" |
||
Linha 189: | Linha 189: | ||
end |
end |
||
end |
end |
||
table.insert( |
table.insert(f020, info) |
||
-- testa se existe(m) ISBN(s) inválido(s) |
-- testa se existe(m) ISBN(s) inválido(s) |
||
Linha 197: | Linha 197: | ||
if string.match(test, 'error') then |
if string.match(test, 'error') then |
||
info = "* <strong class='error'>ISBN inválido, por favor, reveja os números informados.</strong>" |
info = "* <strong class='error'>ISBN inválido, por favor, reveja os números informados.</strong>" |
||
table.insert( |
table.insert(f020, info) |
||
end |
end |
||
Linha 206: | Linha 206: | ||
for _, row in pairs( queryResult ) do |
for _, row in pairs( queryResult ) do |
||
for _, data in pairs( row ) do |
for _, data in pairs( row ) do |
||
f020 = |
f020 = queryResult |
||
end |
end |
||
end |
end |
||
Linha 212: | Linha 212: | ||
if string.match(f020, '-') then |
if string.match(f020, '-') then |
||
info = "* <strong class='error'>O ISBN não pode conter hifens. Apenas números e \"X\" maiúsculo.</strong>" |
info = "* <strong class='error'>O ISBN não pode conter hifens. Apenas números e \"X\" maiúsculo.</strong>" |
||
table.insert( |
table.insert(f020, info) |
||
elseif string.match(f020, 'x') then |
elseif string.match(f020, 'x') then |
||
info = "* <strong class='error'>O ISBN não pode conter um x minúsculo. Apenas números e \"X\" maiúsculo.</strong>" |
info = "* <strong class='error'>O ISBN não pode conter um x minúsculo. Apenas números e \"X\" maiúsculo.</strong>" |
||
table.insert( |
table.insert(f020, info) |
||
end |
end |
||
end |
end |
||
end -- end if 245 |
end -- end if 245 |
||
return table.concat( |
return table.concat( f020, '\n' ), table.concat( f020, '\n') |
||
end |
end |
Edição das 19h37min de 8 de agosto de 2021
A documentação para este módulo pode ser criada em Módulo:BibRules/doc
local p = {}
function p.BibRules( frame )
-- Define o alvo
local target = frame:getParent().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
if not mw.smw then
return "mw.smw module not found"
end
local test, info, queryResult
local f020 = {}
if frame:expandTemplate{ title = 'Exist', args = { '245' } } ~= '' then
-- Record status
test = frame:expandTemplate{ title = 'Field data string', args = { '000', '5', '1', property = 'Leader' } } or false
if test == 'n' then
info = "* Segundo o Líder, este é um registro '''novo''' (não um alterado ou revisado, expandido, excluído, etc.)."
table.insert(f020, info)
elseif test == 'c' then
info = "* Segundo o Líder, este é um registro '''alterado ou revisado''' (não um novo, expandido, excluído, etc.)."
table.insert(f020, info)
elseif test == 'a' or test == 'd' or test == 'p' then
info = "* Segundo o Líder, este é um registro '''expandido''' ou '''excluído''' (não novo)."
table.insert(f020, info)
end
-- Type of record
test = frame:expandTemplate{ title = 'Field data string', args = { '000', '6', '1', property = 'Leader' } } or false
if test == 'a' then
info = "* Segundo o Líder, este registro descreve um '''material textual'''."
table.insert(f020, info)
end
-- Bibliographic level
test = frame:expandTemplate{ title = 'Field data string', args = { '000', '7', '1', property = 'Leader' } } or false
if test == 'm' then
info = "* Segundo o Líder, este registro descreve um '''item monográfico''' (não parte de um item, não um item seriado, não uma coleção, etc.)."
table.insert(f020, info)
end
-- Encoding level
test = frame:expandTemplate{ title = 'Field data string', args = { '000', '17', '1', property = 'Leader' } } or false
if test == '1' then
info = "* Segundo o Líder, este registro tem um nível '''completo''' de catalogação (mas o material não foi examinado)."
table.insert(f020, info)
else
info = "* Segundo o Líder, este registro tem um nível '''completo''' de catalogação (a descrição foi realizada com o material em mãos)."
table.insert(f020, info)
end
-- Descriptive cataloging form
test = frame:expandTemplate{ title = 'Field data string', args = { '000', '18', '1', property = 'Leader' } } or false
if test == 'a' then
info = "* Segundo o Líder, este registro possui uma catalogação '''compatível com as regras do AACR 2'''."
table.insert(f020, info)
else
info = "* Segundo o Líder, este registro possui uma catalogação '''não compatível com as regras da ISBD'''."
table.insert(f020, info)
end
-- Explica a sintaxe "(Biblioteca)NúmeroDeControle"
local f001 = frame:expandTemplate{ title = 'Field data string', args = { '001', '0', '', property = 'Control field data' } }
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(f020, info)
-- Campo 005
queryResult = mw.smw.ask( '[[' .. target .. ']]|?Creation date#-F[l, d \\d\\e F \\d\\e Y]|headers=hide|mainlabel=-' )
local creationDate = ""
if type( queryResult ) == "table" then
for _, row in pairs( queryResult ) do
for _, data in pairs( row ) do
creationDate = 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 = ""
if type( queryResult ) == "table" then
for _, row in pairs( queryResult ) do
for _, data in pairs( row ) do
modificationDate = data
end
end
end
info = "* O registro foi criado em: " .. creationDate .. ". Sua última transação foi em: " .. modificationDate .. "."
table.insert(f020, info)
-- Campo 008
local invalidCode = "<strong class='error'>código inválido para o local de publicação</strong>"
local pubPlace_tbl =
{
["acb"] = "Acre",
["alb"] = "Alagoas",
["amb"] = "Amazonas",
["apb"] = "Amapá",
["bab"] = "Bahia",
["ceb"] = "Ceará",
["dfb"] = "Distrito Federal",
["esb"] = "Espírito Santo",
["gob"] = "Goiás",
["mab"] = "Maranhão",
["mgb"] = "Minas Gerais",
["msb"] = "Mato Grosso do Sul",
["mtb"] = "Mato Grosso",
["pab"] = "Pará",
["pbb"] = "Paraíba",
["peb"] = "Pernambuco",
["pib"] = "Piauí",
["prb"] = "Paraná",
["rjb"] = "Rio de Janeiro",
["rnb"] = "Rio Grande do Norte",
["rob"] = "Rondônia",
["rrb"] = "Roraima",
["rsb"] = "Rio Grande do Sul",
["scb"] = "Santa Catarina",
["seb"] = "Sergipe",
["spb"] = "São Paulo",
["tob"] = "Tocantins",
["bl "] = "Brasil",
["xxu"] = "Estados Unidos",
["flu"] = "Flórida, EUA",
["nyu"] = "Nova York, EUA",
["po "] = "Portugal",
["xxk"] = "Reino Unido",
["fr "] = "França",
["sp "] = "Espanha",
["gw "] = "Alemanha",
["xx "] = "<strong class='error'>não foi identificado um local de publicação no campo 008</strong>",
["vp "] = "há vários locais de publicação",
["esp"] = invalidCode,
["eua"] = invalidCode,
["fra"] = invalidCode,
[" "] = "<strong class='error'>é necessário informar um código de local de publicação, campo 008.</strong>",
}
local f008pubPlace = frame:expandTemplate{ title = 'Field data string', args = { '008', '15', '3', property = 'Control field data' } }
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>"
elseif pubPlace_tbl[f008pubPlace] then
info = "* O item possui a seguinte origem: " .. tostring(pubPlace_tbl[f008pubPlace]) .. "."
else
info = "* O item possui a seguinte origem: " .. f008pubPlace .. "."
end
table.insert(f020, info)
local invalidCode = "<strong class='error'>código inválido para o idioma, campo 008</strong>"
local lang_tbl =
{
["por"] = "português",
["eng"] = "inglês",
["spa"] = "espanhol",
["ger"] = "alemão",
["fre"] = "francês",
["ita"] = "italiano",
["chi"] = "chinês",
["esp"] = invalidCode,
["ing"] = invalidCode,
["fra"] = invalidCode,
["pt"] = invalidCode,
["en"] = invalidCode,
["es"] = invalidCode,
[" "] = "<strong class='error'>é necessário informar um código de idioma no campo 008.</strong>",
}
local f008lang = frame:expandTemplate{ title = 'Field data string', args = { '008', '35', '3', property = 'Control field data' } }
if string.match(f008lang, '^[A-Z]') then
info = "* <strong class='error'>O uso de maiúsculas não é permitido no campo 008, idioma.</strong>"
elseif lang_tbl[f008lang] then
info = "* Majoritariamente, o item se expressa no seguinte idioma: " .. tostring(lang_tbl[f008lang])
else
info = "* Majoritariamente, o item se expressa no seguinte idioma: " .. f008lang
end
-- 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 .. " (traduzido do " .. f041h .. ")."
end
end
table.insert(f020, info)
-- testa se existe(m) ISBN(s) inválido(s)
test = frame:expandTemplate{ title = 'Exist', args = { '020' } } or false
if test ~= '' then
test = frame:expandTemplate{ title = 'Print ISBN' } or false
if string.match(test, 'error') then
info = "* <strong class='error'>ISBN inválido, por favor, reveja os números informados.</strong>"
table.insert(f020, info)
end
-- testa se existe(m) hifen(s) ou x minúsculo no ISBN
queryResult = mw.smw.ask( '[[' .. target .. '#020]]|?Field data#|headers=hide|mainlabel=-' )
f020 = ""
if type( queryResult ) == "table" then
for _, row in pairs( queryResult ) do
for _, data in pairs( row ) do
f020 = queryResult
end
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(f020, info)
elseif string.match(f020, 'x') then
info = "* <strong class='error'>O ISBN não pode conter um x minúsculo. Apenas números e \"X\" maiúsculo.</strong>"
table.insert(f020, info)
end
end
end -- end if 245
return table.concat( f020, '\n' ), table.concat( f020, '\n')
end
return p