Module:Citar periódico

local p = require('Módulo:Citação/CS1')

--[[-- ---

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 = "" .. 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.

]]

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.

]]

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.

]]

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