Nothing Special   »   [go: up one dir, main page]

Ir al contenido

Módulo:contexto

De Wikcionario, el diccionario libre
Documentación del módulo
Esta documentación está transcluida desde Módulo:contexto/doc.
Los editores pueden experimentar en la zona de pruebas de este módulo.
Por favor, añade las categorías e interwikis a la subpágina de documentación. Subpáginas de este módulo.
local m_str = require("Módulo:String")

local ucfirst = m_str.ucfirst
local lcfirst = m_str.lcfirst
local cap = m_str.ucfirst
local minus = m_str.lcfirst
local strupper = m_str.upper
local strlower = m_str.lower
local strfind = m_str.find
local strmatch = m_str.match
local substr = m_str.sub

local insert = table.insert
local concat = table.concat

local obtener_idioma = require("Módulo:lenguas").cod_a_idioma
local sortkey = require("Módulo:sortkey").generarSortkey
local generar_error = require("Módulo:traza")

local prohibido = {
    [','] = true,--'<span class="ib-comma"><span class="qualifier-comma">,</span></span>&nbsp;',
    ['o']= true,
    ['u']= true,
    ['y']= true,
    ['e']=	true,
    [" "] = true,
    ["_"] = true,
}

local deb = {
	["m.p.c"] = true,
	["m.p.c."] = true,
	["m.t"] = true,
	["m.t."] = true,
	["mayúscula"] = true,
	["minúscula"] = true,
	["ordinal compuesto"] = true,
	["ordinal-compuesto"] = true,
	["mayúscula taxones"] = true,
	["mayúscula puntos cardinales"] = true,
	["mayúscula disciplinas"] = true,
	["m.d"] = true,
	["m.d."] = true,
	["medieval"] = true,
	["epónimo"] = true,
	["sigla"] = true,
	["siglas"] = true,
	["fitovariante"] = true,
	["fitovariantes"] = true,
	["numero"] = true,
	["número"] = true,
	["numeral"] = true,
	["numerales"] = true,
}

local params = {
	[1] = {},
    ["nota"] = {lista = true},
    ["leng"] = {},
}

local function f_cat(leng_upper, cat, clave)
    return "[[Categoría:"..leng_upper..":"..cat..(clave and "|"..clave.."]]" or "]]")
end

local export = {}

-- funciones nuevas
function export.ambito(frame)
	local t = {}
	local m = mw.loadData("Módulo:contexto/ámbito")
	local parent_frame = frame:getParent()
	local args = require("Módulo:parámetros").obtener_parametros(parent_frame.args, params)
	
    local leng = args["leng"] or "es"
    local leng_upper = strupper(leng)
    local idioma_obj = obtener_idioma(leng)
    local ns = mw.title.getCurrentTitle().namespace
    local pagename = mw.title.getCurrentTitle().text
    
    local cats = {}
    
    for i, arg in ipairs(args) do
    	if prohibido[arg] then
    		error(arg.. ": parámetro obsoleto")	
    	end
    	local etiqueta, tcat, nota = arg, nil, nil
    	local x = m[arg] or m[cap(arg)]
    	if x then
    		etiqueta = x[1]
    		tcat = x[2]
    		nota = x[3]
    		insert(cats, f_cat(leng_upper, etiqueta, sortkey(pagename, leng, idioma_obj)))
    	end
    	if deb[arg] or deb[cap(arg)] then
    		generar_error("contexto")	
    	end
    	nota = args["nota"][i] or nota
    	local st = etiqueta or arg
    	if nota then
    		if nota:len() > 20 then
    			st = st..frame:extensionTag("ref", nota)
    		else
    			st = st.." ("..nota..")"
    		end
    	end
    	insert(t, st)
    end
    return concat(t, ", ")..concat(cats)
end

function export.uso(frame)
	local t = {}
	local m = mw.loadData("Módulo:contexto/uso")
	local parent_frame = frame:getParent()
	local args = require("Módulo:parámetros").obtener_parametros(parent_frame.args, params)
	
    local leng = args["leng"] or "es"
    local leng_upper = strupper(leng)
    local idioma_obj = obtener_idioma(leng)
    local ns = mw.title.getCurrentTitle().namespace
    local pagename = mw.title.getCurrentTitle().text
    
    local cats = {}
    
    for i, arg in ipairs(args) do
    	if prohibido[arg] then
    		error(arg.. ": parámetro obsoleto")	
    	end
    	arg = strlower(arg)
    	local etiqueta, ucat, nota = arg, nil, nil
    	local x = m[arg]
    	if x then
    		etiqueta = x[1]
    		ucat = x[2]
    		nota = x[3]
    		if ucat and ucat ~= "" then
    			insert(cats, f_cat(leng_upper, ucat, sortkey(pagename, leng, idioma_obj)))
    		end
    	end
    	if deb[arg] then
    		generar_error("contexto")	
    	end
		nota = args["nota"][i] or nota
    	local st = etiqueta or arg
    	if nota then
    		if nota:len() > 20 then
    			st = st..frame:extensionTag("ref", nota)
    		else
    			st = st.." ("..nota..")"
    		end
    	end
    	insert(t, st)
    end
    return concat(t, ", ")..concat(cats)
end

function export.csem(frame)
	local t = {}
	local m = mw.loadData("Módulo:contexto/csem")
	local parent_frame = frame:getParent()
	local args = require("Módulo:parámetros").obtener_parametros(parent_frame.args, params)
	
    local leng = args["leng"] or "es"
    local leng_upper = strupper(leng)
    local idioma_obj = obtener_idioma(leng)
    local ns = mw.title.getCurrentTitle().namespace
    local pagename = mw.title.getCurrentTitle().text
    
    local cats = {}
    
    for i, arg in ipairs(args) do
    	if prohibido[arg] then
    		error(arg.. ": parámetro obsoleto")	
    	end
    	if arg == "csem" then
			generar_error("csem")    		
    	end
    	if strfind(arg, "[gG]entilicio") then
    		generar_error("gentilicio")	
    	end
    	arg = ucfirst(arg)
    	local etiqueta, scat, nota = arg, nil, nil
    	local x = m[arg]
    	if x then
    		etiqueta = x[1]
    		scat = x[2]
    		nota = x[3]
    		if scat and scat ~= "" then
    			insert(cats, f_cat(leng_upper, scat, sortkey(pagename, leng, idioma_obj)))
    		end
    	end
    	if deb[arg] then
    		generar_error("contexto")	
    	end
		nota = args["nota"][i] or nota
    	local st = etiqueta or arg
    	insert(t, i > 1 and lcfirst(st) or st)
    end
    return concat(t, ", ")..concat(cats)
end

return export