Esta wiki foi não teve nenhuma edição nem entrada nos registos durante os últimos 45 dias e foi marcada automaticamente como inativa. Se quiser impedir a wiki de ser fechada mostre alguns sinais de atividade. Se não houver sinais de utilização da wiki nos próximos 15 dias, ela será fechada de acordo com as normas de dormência (que todos os fundadores de wikis aceitam ao pedir uma wiki). Se a wiki for fechada e ninguém a reabrir nos próximos 135 dias, ela será candidata para eliminação. Nota: se é burocrata da wiki, pode ir a Special:ManageWiki e desmarcar "inativa" por si próprio.
De Família Corsi
Ir para navegação Ir para pesquisar

Descrição[editar]

Este módulo destina-se a proporcionar funções básicas da predefinição {{Citar periódico}}.


Outra documentação:


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
Cookies nos ajudam a entregar nossos serviços. Ao usar nossos serviços, você concorda com o uso de cookies.