Mòdul:etiquetes

De Viccionari
Salta a la navegació Salta a la cerca
Icona de documentació de mòdul Documentació del mòdul[mostra] [modifica] [refresca]

A continuació es mostra la documentació transclosa de la subpàgina /ús. [salta a la caixa de codi]


Aquest mòdul s'utilitza com a suport a la plantilla {{marca}}. Vegeu Mòdul:etiquetes/dades per la llista d'etiquetes definides i les alternatives equivalents.

El mòdul tracta cada etiqueta de la següent forma:

  1. Si l'etiqueta està inclosa a Mòdul:etiquetes/dades com una alternativa a una altra etiqueta, la substitueix pel nom d'aquesta etiqueta i continua els següents passos amb el nom nou.
  2. Si l'etiqueta està definida a Mòdul:etiquetes/dades com a tal, usa les dades definides.
  3. En cas contrari, mostra l'etiqueta literalment sense cap canvi.
local m_labeldata = mw.loadData("Mòdul:etiquetes/dades")
local m_utilities = require("Mòdul:utilitats")
local m_llengua = require("Mòdul:llengua")

local export = {}

local function show_categories(data, lang, script, sort_key, script2, sort_key2, term_mode)
	local categories = {}

	for i, cat in ipairs(data.categories_llengua or {}) do

		if script then
			table.insert(categories, cat .. " en " .. m_llengua.nom(lang) .. " " .. script)
		else
			table.insert(categories, cat .. " en " .. m_llengua.nom(lang))
		end
		
	end
	
	for i, cat in ipairs(data.categories_literal or {}) do
		table.insert(categories, cat)
	end
	
	return m_utilities.format_categories(categories, lang, sort_key)
end

local function show_labels(labels, lang, script, script2, sort_key, sort_key2, nocat, term_mode)
	if #labels < 1 then
		if mw.title.getCurrentTitle().nsText == "Plantilla" then
			labels = {"exemple"}
		else
			error("Cal especificar almenys una etiqueta.")
		end
	end
	
	-- Show the labels
	local omit_preComma = false
	local omit_postComma = false
	
	for i, label in ipairs(labels) do
		if omit_postComma then
			omit_preComma = true
			omit_postComma = false
		end
		
		if m_labeldata.aliases[label] then
			label = m_labeldata.aliases[label]
		end
		
		local deprecated = false
		if m_labeldata.deprecated[label] then
			deprecated = true
		end
			
		local data = m_labeldata.labels[label] or {}
			
		label = data.mostra or label
		
		local omit_comma = omit_preComma or data.omit_preComma
		omit_preComma = false
		omit_postComma = data.omit_postComma
		
		if deprecated then
			label = '<span class="deprecated-label">' .. label .. '</span>'
			if not nocat then
				label = label .. m_utilities.format_categories({ "Manteniment plantilla context" }, lang)
			end
		end
		
		if i > 1 then
			label = (not omit_comma and "<span class=\"ib-comma\">,</span>" or "") .. "&#32;" .. label
		end
		
		labels[i] = label .. (nocat and "" or show_categories(data, lang, script, sort_key, script2, sort_key2, term_mode))
	end
	
	return
		"<span class=\"ib-brac\">(</span><span class=\"ib-content\">" ..
		table.concat(labels, "") ..
		"</span><span class=\"ib-brac\">)</span>"
end

function export.show(frame)
	local args = frame:getParent().args
	local compat = frame.args["compat"] or ""
	local term_mode = (frame.args["term"] or "") ~= ""
	
	if compat == "" then
		if not args[1] then
			if mw.title.getCurrentTitle().nsText == "Plantilla" then
				compat = true
			else
				error("Cal especificar almenys una etiqueta.")
			end
		elseif m_llengua.existeix(args[1]) then
			compat = false
		else
			compat = true
		end
	end
	
	-- Gather parameters
	local nocat = frame.args["nocat"] or args["nocat"]; if nocat == "" then nocat = nil end
	local script = args["script"]; if script == ""  then script = nil end
	local script2 = args["script2"]; if script2 == ""  then script2 = nil end
	local sort_key = args["sort"]; if sort_key == ""  then sort_key = nil end
	local sort_key2 = args["sort2"]; if sort_key2 == ""  then sort_key2 = nil end
	
	local lang = compat and "ca" or args[1]

	-- Gather the labels
	local labels = {}
	
	local i = (compat and 1 or 2)
	local label = args[i]; if label == "" then label = nil end
	
	while label do
		table.insert(labels, label)
		i = i + 1
		label = args[i]; if label == "" then label = nil end
	end
	
	return show_labels(labels, lang, script, script2, sort_key, sort_key2, nocat, term_mode)
end

return export