Módulo:Citar episódio

Fonte: Enciclopédia de conhecimento da Igreja de Deus
Saltar para a navegação Saltar para a pesquisa

A documentação para este módulo pode ser criada na página Módulo:Citar episódio/doc

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 {{citar episódio}}.
]]
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.TitleLink .. '|' .. A.Series .. ']]'
								-- link, mas não URL
								else
												-- ok para wikiligar
												A.Chapter = '[[' .. A.TitleLink .. '|' .. 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