A documentação para este módulo pode ser criada em Módulo:Citar periódico/doc
local p = require('Módulo:Citação/CS1') --[[--------------------------< a b s t r a c a o >----------------------------------- Código em comum às citações de periódico ]] local abstracao = function(config, A) config.usaVolume = true config.usaIssue = true config.ChapterNaoSuportado = true local chap_param -- pega o nome do parâmetro de um destes peta-parâmetros relacionados a "chapter" if is_set (A.Chapter) then chap_param = A:ORIGIN ('Chapter') elseif is_set (A.TransChapter) then chap_param = A:ORIGIN ('TransChapter') elseif is_set (A.ChapterURL) then chap_param = A:ORIGIN ('ChapterURL') elseif is_set (A.ScriptChapter) then chap_param = A:ORIGIN ('ScriptChapter') else is_set (A.ChapterFormat) chap_param = A:ORIGIN ('ChapterFormat') end -- se foi encontrado algum... if is_set (chap_param) then -- ... adiciona mensagem de erro table.insert( z.message_tail, { set_error( 'chapter_ignored', {chap_param}, true ) } ) -- e esvazia para evitar problemas com concatenações A.Chapter = '' A.TransChapter = ''; A.ChapterURL = ''; A.ScriptChapter = ''; A.ChapterFormat = ''; end local TransTitle = A.TransTitle local Title = A.Title if is_set(A.TitleLink) and is_set(A.Title) then Title = "[[" .. A.TitleLink .. "|" .. Title .. "]]" end config.TituloFormatado = {} if (is_set(Title)) then Title = kern_quotes (Title) Title = wrap_style ('quoted-title', Title) config.TituloFormatado.Title = Title end if (is_set(TransTitle)) then TransTitle= wrap_style ('trans-quoted-title', TransTitle ) -- .. ", " config.TituloFormatado.TransTitle = TransTitle end end --[[--------------------------< p . p e r i o d i c o >---------------------------------- Este é o método principal da predefinição {{citar periódico}}. ]] p.periodico = function(frame) frame.whitelist = { aspas = true, mes = true, ["mês"] = true} local config, args, A = tratarArgumentos(frame) config.CitationClass = '' config.permPCMcomoURL = true local classe = 'journal' -- abstração de códigos que os periódicos têm em comum abstracao(config, A) if is_set(args.aspas) and args.aspas:lower() == 'não' then config.TituloFormatado = nil end local mes = args.mes or args["mês"] if is_set(A.Year) and is_set(mes) then meses = {"janeiro", "fevereiro", "março", "abril", "maio", "junho", "julho", "agosto", "setembro", "outubro", "novembro", "dezembro"} local n = mes:match("^(%d+)$") n = n and tonumber(n) if n and n > 0 and n < 13 then A.Date = meses[n] .. ' de ' .. A.Year A.Year = '' else existe = false for _,m in pairs(meses) do if m == tostring(mes) then existe = true break end end if (existe) then A.Date = mes .. ' de ' .. A.Year A.Year = '' end end end local sepc = set_style (A.Mode:lower()) local use_lowercase = sepc == ',' local page, pages = '', '' -- mla sempre usa os prefixos p ou pp if A.Mode:lower() ~= 'mla' then if is_set(A.Page) then page = substitute(cfg.messages['j-page(s)'], A.Page) elseif is_set(A.Pages) then page = substitute (cfg.messages['j-page(s)'], A.Pages) end if is_set(A.TotalPages) then pages = substitute (cfg.messages['total-p'], {sepc, A.TotalPages}) end else page, pages = format_pages (A.Page, A.Pages, sepc, A.NoPP, use_lowercase, A.TotalPages) end local volume = A.Volume if ('mla' == A.Mode:lower()) then -- mla 8th edition; força letra minúscula if is_set (volume) and is_set (A.Issue) then volume = wrap_msg ('vol-no', {sepc, volume, A.Issue}, true) elseif is_set (volume) then volume = wrap_msg ('vol', {sepc, volume}, true) else volume = '' end else volume = format_volume_issue (volume, A.Issue, sepc, use_lowercase) end if not is_set(A.Title) and is_set(volume) then config.TituloDispensavel = true if is_set(A.URL) then for i=1,volume:len() do if volume:sub(i,i):match(("[^%".. sepc .. "%s]")) then volume = volume:sub(1, i-1) .. '['.. A.URL .. ' '.. volume:sub(i) .. ']' break end end A.URL = '' end end -- Função com o código abstraído local B A, B = citation0(config, args, A) A.Page = page A.Pages = pages A.Volume = volume if is_set(A.Others) then A.Others = A.Others .. B.sepc .. " " end if 'mla' == A.Mode then B.tcommon = safe_join( {A.Periodical, A.Format, A.TitleType, A.Series, A.Language , A.Edition, B.Publisher, A.Agency, A.Volume}, B.sepc ) else B.tcommon = safe_join( {A.Others, A.Title, A.TitleNote, A.Edition, B.Publisher, A.Periodical , A.Format, A.TitleType, A.Series, A.Language, A.Agency, A.Volume}, B.sepc ) end config.CitationClass = classe B.config = config return textoFinal(A, B) end --[[--------------------------< p . j o r n a l >----------------------------------------- Este é o método principal da predefinição {{citar jornal}}. ]] p.jornal = function(frame) local config, args, A = tratarArgumentos(frame) config.CitationClass = '' local classe = 'news' -- abstração de códigos que os periódicos têm em comum abstracao(config, A) -- Função com o código abstraído local B A, B = citation0(config, args, A) if ('mla' == A.Mode) then -- caso especial caso estiver no modo MLA B.tcommon = safe_join( {A.Periodical, A.Format, A.TitleType, A.Series , A.Language, A.Edition, B.Publisher, A.Agency}, B.sepc ) else B.tcommon = safe_join({A.Title, A.TitleNote, A.Periodical, A.Format, A.TitleType , A.Series, A.Language, A.Volume, A.Others, A.Edition, B.Publisher, A.Agency}, B.sepc ) end config.CitationClass = classe B.config = config return textoFinal(A, B) end --[[--------------------------< p . r e v i s t a >---------------------------------- Este é o método principal da predefinição {{citar revista}}. ]] p.revista = function(frame) local config, args, A = tratarArgumentos(frame) config.CitationClass = '' local classe = 'magazine' -- abstração de códigos que os periódicos têm em comum abstracao(config, A) local sepc = set_style (A.Mode:lower()) local volume = A.Volume if is_set (volume) and is_set (A.Issue) then volume = wrap_msg ('vol-no', {sepc, volume, A.Issue}, sepc == ','); elseif is_set (volume) then volume = wrap_msg ('vol', {sepc, volume}, sepc == ','); elseif is_set (A.Issue) then volume = wrap_msg ('issue', {sepc, A.Issue}, sepc == ','); else volume = '' end -- Função com o código abstraído local B A, B = citation0(config, args, A) A.Volume = volume config.CitationClass = classe B.config = config return textoFinal(A, B) end return p