Módulo:ABNT: mudanças entre as edições
Ir para navegação
Ir para pesquisar
Sem resumo de edição |
Sem resumo de edição |
||
(24 revisões intermediárias pelo mesmo usuário não estão sendo mostradas) | |||
Linha 2: | Linha 2: | ||
function p.CreateReference( frame ) |
function p.CreateReference( frame ) |
||
-- Define o alvo da referência: pode ser o primeiro parâmetro passado à |
-- Define o alvo da referência: pode ser o primeiro parâmetro passado à |
||
-- o valor da query string "fullpagename" |
-- predefinição; o valor da query string "fullpagename" |
||
-- (via UrlGetParameters); o parâmetro nomeado Page (via WSSearchFront); |
|||
⚫ | |||
-- ou o título da página. |
|||
⚫ | |||
⚫ | |||
if target == '' or target == nil then |
if target == '' or target == nil then |
||
target = mw.uri.decode( frame:callParserFunction( '#urlget', 'fullpagename' ) ) |
target = mw.uri.decode( frame:callParserFunction( '#urlget', 'fullpagename' ) ) |
||
⚫ | |||
if target == '' or target == nil then |
|||
target = frame:getParent().args.Page |
|||
end |
end |
||
if target == '' or target == nil then |
if target == '' or target == nil then |
||
target = mw.title.getCurrentTitle().prefixedText |
target = mw.title.getCurrentTitle().prefixedText |
||
end |
end |
||
local reference |
|||
-- Alvo definido |
-- Alvo definido |
||
-- Definir se há criador(es) para o início da referência |
-- Definir se há criador(es) para o início da referência |
||
local creator = frame:callParserFunction{ name = '#show', args = { target, '?Has creator#', link = 'none', valuesep = '; '} } |
local creator = frame:callParserFunction{ name = '#show', args = { target, '?Has creator#', link = 'none', valuesep = '; '} } |
||
-- Definir se há |
-- Definir se há colaboradores para o início da referência |
||
local |
local contributor = frame:callParserFunction{ name = '#show', args = { target, '?Has contributor#', link = 'none', valuesep = '; '} } |
||
-- Definir o título e o subtítulo |
-- Definir o título e o subtítulo |
||
local title = frame:callParserFunction{ name = '#show', args = { target, '?Display title of#', link = 'none' } } |
local title = frame:callParserFunction{ name = '#show', args = { target, '?Display title of#', link = 'none' } } |
||
title = string.gsub( title, '(:.*)', '<span style="font-weight: normal;">%1</span>') |
title = string.gsub( title, '(:.*)', '<span style="font-weight: normal;">%1</span>') |
||
-- Condição: entrada |
-- Condição: entrada pelos agentes OU pelo título |
||
local agents={} |
|||
if #creator >= 1 or #contributor >= 1 then |
|||
⚫ | |||
if creator ~= '' then |
|||
⚫ | |||
table.insert(agents, creator) -- como criador vem do campo 1XX, não há mais de um valor |
|||
end |
|||
elseif #editor >= 1 then |
|||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
reference = string.gsub( title, '^(.-%s)', '<span style="text-transform: uppercase;">%1</span>') .. '. ' |
|||
for v in string.gmatch(contributor, "([^;]+)") do -- como colaborador vem do campo 7XX, pode haver mais de um valor |
|||
table.insert(agents, v) |
|||
⚫ | |||
for k, v in pairs(agents) do |
|||
if string.match( v, '^(.*,.*),') then |
|||
-- 'Assis, Machado de, 1839-1908' > 'Assis, Machado de' |
|||
agents[k] = string.match( v, '^(.*,.*),') |
|||
end |
|||
end |
|||
for k, v in pairs(agents) do |
|||
⚫ | |||
-- 'Tolkien, J. R. R. (John Ronald Reuel), 1892-1973' > 'Tolkien, J. R. R.' |
|||
agents[k] = string.match( v, '^(.*)%s%(') |
|||
end |
|||
end |
|||
local agentStr = table.concat(agents, "; ") |
|||
⚫ | |||
⚫ | |||
⚫ | |||
-- Entrada pelo título |
|||
⚫ | |||
end |
end |
||
-- Entrada e título definidos |
-- Entrada e título definidos |
||
Linha 80: | Linha 104: | ||
-- Verificar se há ISBN |
-- Verificar se há ISBN |
||
local isbn = frame:callParserFunction{ name = '#show', args = { target, '?Has ISBN#', link = 'none' } } |
local isbn = frame:callParserFunction{ name = '#show', args = { target, '?Has ISBN#', link = 'none' } } |
||
isbn = string.match( isbn, '^%d+') |
isbn = string.match( isbn, '^%d+') or '' |
||
if #isbn >= 1 then |
if #isbn >= 1 then |
||
isbn = frame:callParserFunction{ name = '#invoke: |
isbn = frame:callParserFunction{ name = '#invoke:Hyphenate', args = { 'ISBN', isbn } } |
||
reference = reference .. ' ISBN ' .. isbn .. '. ' |
reference = reference .. ' ISBN ' .. isbn .. '. ' |
||
end |
end |
Edição atual tal como às 11h04min de 3 de janeiro de 2023
A documentação para este módulo pode ser criada em Módulo:ABNT/doc
local p = {}
function p.CreateReference( frame )
-- Define o alvo da referência: pode ser o primeiro parâmetro passado à
-- predefinição; o valor da query string "fullpagename"
-- (via UrlGetParameters); o parâmetro nomeado Page (via WSSearchFront);
-- ou o título da página.
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 = frame:getParent().args.Page
end
if target == '' or target == nil then
target = mw.title.getCurrentTitle().prefixedText
end
local reference
-- Alvo definido
-- Definir se há criador(es) para o início da referência
local creator = frame:callParserFunction{ name = '#show', args = { target, '?Has creator#', link = 'none', valuesep = '; '} }
-- Definir se há colaboradores para o início da referência
local contributor = frame:callParserFunction{ name = '#show', args = { target, '?Has contributor#', link = 'none', valuesep = '; '} }
-- Definir o título e o subtítulo
local title = frame:callParserFunction{ name = '#show', args = { target, '?Display title of#', link = 'none' } }
title = string.gsub( title, '(:.*)', '<span style="font-weight: normal;">%1</span>')
-- Condição: entrada pelos agentes OU pelo título
local agents={}
if #creator >= 1 or #contributor >= 1 then
if creator ~= '' then
table.insert(agents, creator) -- como criador vem do campo 1XX, não há mais de um valor
end
for v in string.gmatch(contributor, "([^;]+)") do -- como colaborador vem do campo 7XX, pode haver mais de um valor
table.insert(agents, v)
end
for k, v in pairs(agents) do
if string.match( v, '^(.*,.*),') then
-- 'Assis, Machado de, 1839-1908' > 'Assis, Machado de'
agents[k] = string.match( v, '^(.*,.*),')
end
end
for k, v in pairs(agents) do
if string.match( v, '^(.*)%s%(') then
-- 'Tolkien, J. R. R. (John Ronald Reuel), 1892-1973' > 'Tolkien, J. R. R.'
agents[k] = string.match( v, '^(.*)%s%(')
end
end
local agentStr = table.concat(agents, "; ")
agentStr = frame:callParserFunction{ name = '#rreplace', args = { agentStr, '/(^.*?,)|(;.*?,)/', '<span style="text-transform: uppercase;">$1$2</span>' } }
reference = agentStr .. '. <b>' .. title .. '</b>. '
else
-- Entrada pelo título
reference = string.gsub( title, '^(.-%s)', '<span style="text-transform: uppercase;">%1</span>. ')
end
-- Entrada e título definidos
-- Verificar se há edição
local edition = frame:callParserFunction{ name = '#show', args = { target, '?Has designation of edition#', link = 'none' } }
if #edition >= 1 then
edition = string.gsub( edition, 'edição', 'ed.')
reference = reference .. edition .. '. '
end
-- Verificar se há local de publicação
local place = frame:callParserFunction{ name = '#show', args = { target, '?Has place of publication#', link = 'none', valuesep = '; ' } }
place = string.gsub( place, ';.*$', '')
if #place >= 1 then
reference = reference .. place .. ': '
else
reference = reference .. '[S.l.]: '
end
-- Verificar se há editora
local publisher = frame:callParserFunction{ name = '#show', args = { target, '?Has publisher\'s name#', link = 'none', valuesep = ': ' } }
publisher = string.gsub( publisher, ':.*$', '')
if #publisher >= 1 then
reference = reference .. publisher .. ', '
else
reference = reference .. '[s.n.], '
end
-- Verificar se há ano de publicação
local year = frame:callParserFunction{ name = '#show', args = { target, '?Has date of publication#-f[Y]', link = 'none' } }
local cyear = frame:callParserFunction{ name = '#show', args = { target, '?Has copyright date#-f[Y]', link = 'none' } }
if #year >= 1 then
reference = reference .. year .. '. '
elseif #cyear >= 1 then
reference = reference .. cyear .. '. '
else
reference = reference .. '[19--? ou 20--?]. '
end
-- Verificar se há páginas
local pages = frame:callParserFunction{ name = '#show', args = { target, '?Has extent#', link = 'none' } }
pages = string.gsub( pages, 'páginas', 'p. ')
if #pages >= 1 then
reference = reference .. pages
end
-- Verificar se há ISBN
local isbn = frame:callParserFunction{ name = '#show', args = { target, '?Has ISBN#', link = 'none' } }
isbn = string.match( isbn, '^%d+') or ''
if #isbn >= 1 then
isbn = frame:callParserFunction{ name = '#invoke:Hyphenate', args = { 'ISBN', isbn } }
reference = reference .. ' ISBN ' .. isbn .. '. '
end
-- Verificar se há URL
local url = frame:callParserFunction{ name = '#show', args = { target, '?Has uniform resource locator#', link = 'none' } }
if #url >= 1 then
reference = reference .. ' Disponível em: ' .. url .. '. Acesso em: ' .. string.lower( frame:callParserFunction{ name = '#time', args = { 'j M. Y' } } ) .. '.'
end
-- Retirar pontos repetidos
reference = string.gsub( reference, '%.%.', '.')
-- Exibe a referência
return reference
end
return p