Ir para o conteúdo

Módulo:Citar episódio

De Wiki TokuDrive
Revisão de 06h32min de 5 de julho de 2026 por Tavoraadmin (discussão | contribs) (Importando predefinição/módulo da Wikipédia em português para manter layout)
(dif) ← Edição anterior | Revisão atual (dif) | Versão posterior → (dif)

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

--[[--------------------------< e . e p i s o d i o >------------------------------------------------------

Este é o método principal da predefinição {{#invoke:Citar episódio|episodio}}.

]]

e.episodio = function(frame)

   -- lista de parâmetros usados apenas neste módulo
   frame.whitelist = {
       ['episódio'] = true,
       episodio = true,
       episode = true
   }
   -- suporte aos antigos parâmetros "início" e "fim" da versão anterior ao código em Lua
   local airDate
   do
       local tmpFrame = frame:getParent()
       local inicio = tmpFrame.args['início'] or tmpFrame.args.began
       local fim = tmpFrame.args.fim or tmpFrame.args.ended
       if (inicio and fim) then
           airDate = inicio .. ' – ' .. fim
       end
       if inicio or fim then
           frame.whitelist['início'] = true
           frame.whitelist.began = true
           frame.whitelist.fim = true
           frame.whitelist.ended = true
       end
   end
   local config, args, A = tratarArgumentos(frame)
   config.CitationClass = 
   config.usaIssue = true
   config.naoUsaPage = true
   local sepc = set_style (A.Mode:lower())
   table.insert(cfg.aliases.Issue, 'episódio')
   table.insert(cfg.aliases.Issue, 'episodio')
   table.insert(cfg.aliases.Issue, 'episode')
   cfg.aliases.ChapterURL = cfg.aliases.URL
   --[[ isto é apenas para forçar o upvalue da tabela 'origin' do metadados de
        'A' a carregar o nome do alias usado pelo parâmetro em tal tabela, se o
        atributo A.URL receber atribuição antes disso, A:ORIGIN('URL') será nil
   ]]
   A:ORIGIN('URL')
   A:ORIGIN('Chapter')
   -- verefica wikimarkup em |series-link= ou em |series= quando |series-link= estiver definido
   link_title_ok (A.SeriesLink, A:ORIGIN ('SeriesLink'), A.Series, 'series')
   local s, n = {}, {};
   if is_set(A.Network) then table.insert(n, A.Network); end
   if is_set(A.Station) then table.insert(n, A.Station); end
   A.ID = table.concat(n, sepc .. ' ');
   if not is_set(A.AirDate) then
       A.AirDate = airDate or 
   end
   if not is_set (A.Date) and is_set (A.AirDate) then
       A.Date = A.AirDate
   end
   --[[ ou um ou outro
   if is_set (A.Season) and is_set (A.SeriesNumber) then
       -- adiciona mensagem de erro
       table.insert( z.message_tail, { set_error('redundant_parameters', {wrap_style
           ('parameter', 'season') .. ' e ' .. wrap_style ('parameter', 'seriesno')}, true)})
       A.SeriesNumber =  -- esvaziar; preferir |season= sobre |seriesno=
   end]]
   -- monta uma tabela de partes concatenadas depois no parâmetro Series
   if is_set(A.Season) then table.insert(s, wrap_msg ('season', A.Season, sepc == ',')); end
   if is_set(A.SeriesNumber) then table.insert(s, wrap_msg ('series', A.SeriesNumber, sepc == ',')); end
   if is_set(A.Issue) then table.insert(s, wrap_msg ('episode', A.Issue, sepc == ',')); end
   A.Issue =  -- esvaziar porque este não é um parâmetro único
   A.Chapter = A.Title -- promove o parâmetro title para chapter
   A.ScriptChapter = A.ScriptTitle
   A.TransChapter = A.TransTitle
   A.Title = A.Series -- promove series para title
   A.TitleLink = A.SeriesLink
    -- esta é a concatenação de season, seriesno, episode number
   A.Series = table.concat(s, sepc .. ' ')
   if is_set (A.TitleLink) then
       -- se ambos estão definidos, URL liga episódio;
       if  is_set (A.ChapterURL) then
           -- series liga com A.TitleLink (episodelink -> A.TitleLink -> ChapterLink) feio
           A.Series = '' .. A.Series .. ''
       -- link, mas não URL
       else
           -- ok para wikiligar
           A.Chapter = '' .. A.Chapter .. ''
       end
   end
   A.URL =  -- esvaziar
   A.TransTitle = 
   A.ScriptTitle = 
   -- testa se a citação está sem título
   if not is_set(A.Title) then
       table.insert(z.message_tail, { set_error('citation_missing_title', {'series'}, true)})
   end
   config.TituloDispensavel = true -- não precisa testar isso posteriormente em citation0
   -- Função com o código abstraído
   local B
   A, B = citation0( config, args, A)
   B.tcommon = safe_join( {A.Title, A.TitleNote, A.TitleType, A.Series, A.Transcript
       , A.Language, A.Edition, B.Publisher}, sepc )
   config.CitationClass = 'episode'
   B.config = config
   return textoFinal(A, B)

end

return e