<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pt-BR">
	<id>https://wiki.tokusatsus.com/index.php?action=history&amp;feed=atom&amp;title=M%C3%B3dulo%3ALabelled_list_hatnote</id>
	<title>Módulo:Labelled list hatnote - Histórico de revisão</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.tokusatsus.com/index.php?action=history&amp;feed=atom&amp;title=M%C3%B3dulo%3ALabelled_list_hatnote"/>
	<link rel="alternate" type="text/html" href="https://wiki.tokusatsus.com/index.php?title=M%C3%B3dulo:Labelled_list_hatnote&amp;action=history"/>
	<updated>2026-07-05T09:29:50Z</updated>
	<subtitle>Histórico de revisões para esta página neste wiki</subtitle>
	<generator>MediaWiki 1.45.3</generator>
	<entry>
		<id>https://wiki.tokusatsus.com/index.php?title=M%C3%B3dulo:Labelled_list_hatnote&amp;diff=2470&amp;oldid=prev</id>
		<title>Tavoraadmin: Importando predefinição/módulo da Wikipédia em português para manter layout</title>
		<link rel="alternate" type="text/html" href="https://wiki.tokusatsus.com/index.php?title=M%C3%B3dulo:Labelled_list_hatnote&amp;diff=2470&amp;oldid=prev"/>
		<updated>2026-07-05T04:53:05Z</updated>

		<summary type="html">&lt;p&gt;Importando predefinição/módulo da Wikipédia em português para manter layout&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Página nova&lt;/b&gt;&lt;/p&gt;&lt;div&gt;--------------------------------------------------------------------------------&lt;br /&gt;
--                               Lista rotulada                               --&lt;br /&gt;
--                                                                            --&lt;br /&gt;
-- Este módulo faz o trabalho principal de criar uma nota (&amp;#039;hatnote&amp;#039;)         --&lt;br /&gt;
-- composta por uma lista prefixada por um rótulo terminado em dois pontos,   --&lt;br /&gt;
-- ou seja, &amp;quot;Rótulo: [&amp;#039;andList&amp;#039; de páginas]&amp;quot;, para {{Ver também}} e           --&lt;br /&gt;
-- predefinições similares.                                                   --   &lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local mHatnote = require(&amp;#039;Módulo:Hatnote&amp;#039;)&lt;br /&gt;
local mHatlist = require(&amp;#039;Módulo:Hatnote list&amp;#039;)&lt;br /&gt;
local mArguments -- inicializa preguiçosamente&lt;br /&gt;
local yesno -- inicializa preguiçosamente&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
-- Padrões globais para este módulo&lt;br /&gt;
local defaults = {&lt;br /&gt;
	label = &amp;#039;Ver também&amp;#039;, -- Recurso (&amp;#039;fallback&amp;#039;) final para argumento de rótulo (&amp;#039;label&amp;#039;)&lt;br /&gt;
	labelForm = &amp;#039;%s: %s&amp;#039;,&lt;br /&gt;
	prefixes = {&amp;#039;label&amp;#039;, &amp;#039;label &amp;#039;, &amp;#039;l&amp;#039;},&lt;br /&gt;
	template = &amp;#039;Módulo:Labelled list hatnote&amp;#039;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
-- Sequências (&amp;#039;strings&amp;#039;) de mensagem localizáveis&lt;br /&gt;
local msg = {&lt;br /&gt;
	errorSuffix = &amp;#039;#Erros&amp;#039;,&lt;br /&gt;
	noInputWarning = &amp;#039;nenhum nome de página especificado&amp;#039;,&lt;br /&gt;
	noOutputWarning =&lt;br /&gt;
		&amp;quot;&amp;#039;&amp;#039;&amp;#039;[[%s]] — sem saída: nenhuma das páginas de destino existe.&amp;#039;&amp;#039;&amp;#039;&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
-- Função auxiliar que pré-combina parâmetros de exibição em argumentos de página.&lt;br /&gt;
-- Também compacta arranjos esparsos, como um efeito colateral desejável.&lt;br /&gt;
function p.preprocessDisplays (args, prefixes)&lt;br /&gt;
	-- Os prefixos especificam quais parâmetros, em ordem, devem ser verificados quanto às opções a serem mostradas&lt;br /&gt;
	-- Cada um deles tem números anexados automaticamente, por exemplo &amp;#039;label1&amp;#039;, &amp;#039;label 1&amp;#039; e &amp;#039;l1&amp;#039;&lt;br /&gt;
	prefixes = prefixes or defaults.prefixes&lt;br /&gt;
	local indices = {}&lt;br /&gt;
	local sparsePages = {}&lt;br /&gt;
	for k, v in pairs(args) do&lt;br /&gt;
		if type(k) == &amp;#039;number&amp;#039; then&lt;br /&gt;
			indices[#indices + 1] = k&lt;br /&gt;
			local display&lt;br /&gt;
			for i = 1, #prefixes do&lt;br /&gt;
				display = args[prefixes[i] .. k]&lt;br /&gt;
				if display then break end&lt;br /&gt;
			end&lt;br /&gt;
			sparsePages[k] = display and&lt;br /&gt;
				string.format(&amp;#039;%s|%s&amp;#039;, string.gsub(v, &amp;#039;|.*$&amp;#039;, &amp;#039;&amp;#039;), display) or v&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	table.sort(indices)&lt;br /&gt;
	local pages = {}&lt;br /&gt;
	for k, v in ipairs(indices) do pages[#pages + 1] = sparsePages[v] end&lt;br /&gt;
	return pages&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Função auxiliar para obter um destino de página de uma sequência (&amp;#039;string&amp;#039;) de página processada&lt;br /&gt;
-- por exemplo. &amp;quot;Página|Rótulo&amp;quot; → &amp;quot;Página&amp;quot; ou &amp;quot;Destino&amp;quot; → &amp;quot;Destino&amp;quot;&lt;br /&gt;
local function getTarget(pagename)&lt;br /&gt;
 	local pipe = string.find(pagename, &amp;#039;|&amp;#039;)&lt;br /&gt;
	return string.sub(pagename, 0, pipe and pipe - 1 or nil)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Produz uma nota (&amp;#039;hatnote&amp;#039;) de lista de páginas rotuladas.&lt;br /&gt;
-- O quadro principal (definição da predefinição) leva 1 ou 2 argumentos, para um rótulo singular &lt;br /&gt;
-- e (opcionalmente) plural, respectivamente:&lt;br /&gt;
-- * {{#invoke:Labelled list hatnote|labelledList|Rótulo singular|Rótulo plural}}&lt;br /&gt;
-- A predefinição resultante usa os parâmetros de nome de página e rótulo normalmente.&lt;br /&gt;
function p.labelledList (frame)&lt;br /&gt;
	mArguments = require(&amp;#039;Módulo:Arguments&amp;#039;)&lt;br /&gt;
	yesno = require(&amp;#039;Módulo:Yesno&amp;#039;)&lt;br /&gt;
	local labels = {frame.args[1] or defaults.label}&lt;br /&gt;
	labels[2] = frame.args[2] or labels[1]&lt;br /&gt;
	labels[3] = frame.args[3] -- (&amp;#039;no defaulting&amp;#039;)&lt;br /&gt;
	labels[4] = frame.args[4] -- (&amp;#039;no defaulting&amp;#039;)&lt;br /&gt;
	local template = frame:getParent():getTitle()&lt;br /&gt;
	local args = mArguments.getArgs(frame, {parentOnly = true})&lt;br /&gt;
	local pages = p.preprocessDisplays(args)&lt;br /&gt;
	local options = {&lt;br /&gt;
		category = yesno(args.category),&lt;br /&gt;
		extraclasses = frame.args.extraclasses,&lt;br /&gt;
		ifexists = yesno(frame.args.ifexists),&lt;br /&gt;
		namespace = frame.args.namespace or args.namespace,&lt;br /&gt;
		selfref = yesno(frame.args.selfref or args.selfref),&lt;br /&gt;
		template = template&lt;br /&gt;
	}&lt;br /&gt;
	return p._labelledList(pages, labels, options)&lt;br /&gt;
end&lt;br /&gt;
	&lt;br /&gt;
local function exists(title)&lt;br /&gt;
	local success, result = pcall(function() return title.exists end)&lt;br /&gt;
	if success then&lt;br /&gt;
		return result&lt;br /&gt;
	else&lt;br /&gt;
		return true&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._labelledList (pages, labels, options)&lt;br /&gt;
	local removednonexist = false&lt;br /&gt;
	if options.ifexists then&lt;br /&gt;
		for k = #pages, 1, -1 do -- itera para trás para permitir remoções suaves&lt;br /&gt;
			local v = pages[k]&lt;br /&gt;
			if mw.ustring.sub(mw.text.trim(v), 1, 1) ~= &amp;quot;#&amp;quot; then&lt;br /&gt;
				local title = mw.title.new(getTarget(v), namespace)&lt;br /&gt;
				if (v == &amp;#039;&amp;#039;) or (title == nil) or not exists(title) then&lt;br /&gt;
					table.remove(pages, k)&lt;br /&gt;
					removednonexist = true&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	labels = labels or {}&lt;br /&gt;
	label = (#pages == 1 and labels[1] or labels[2]) or defaults.label&lt;br /&gt;
	for k, v in pairs(pages) do &lt;br /&gt;
		if mHatnote.findNamespaceId(v) ~= 0 then&lt;br /&gt;
			label =&lt;br /&gt;
				(&lt;br /&gt;
					#pages == 1 and&lt;br /&gt;
					(labels[3] or labels[1] or defaults.label) or&lt;br /&gt;
					(labels[4] or labels[2] or defaults.label)&lt;br /&gt;
				) or defaults.label&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if #pages == 0 then&lt;br /&gt;
		if removednonexist then&lt;br /&gt;
			mw.addWarning(&lt;br /&gt;
				string.format(&lt;br /&gt;
					msg.noOutputWarning, options.template or defaults.template&lt;br /&gt;
				)&lt;br /&gt;
			)&lt;br /&gt;
			return &amp;#039;&amp;#039;&lt;br /&gt;
		else&lt;br /&gt;
			return mHatnote.makeWikitextError(&lt;br /&gt;
				msg.noInputWarning,&lt;br /&gt;
				(options.template or defaults.template) .. msg.errorSuffix,&lt;br /&gt;
				options.category&lt;br /&gt;
			)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	local text = string.format(&lt;br /&gt;
		options.labelForm or defaults.labelForm,&lt;br /&gt;
		label,&lt;br /&gt;
		mHatlist.andList(pages, true)&lt;br /&gt;
	)&lt;br /&gt;
	local hnOptions = {&lt;br /&gt;
		extraclasses = options.extraclasses,&lt;br /&gt;
		selfref = options.selfref&lt;br /&gt;
	}&lt;br /&gt;
	return mHatnote._hatnote(text, hnOptions)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Tavoraadmin</name></author>
	</entry>
</feed>