Módulo:auto cat

Hola, siéntete bienvenido o bienvenida, estás en esta página web explorando el significado de la palabra Módulo:auto cat. En esta página web no solo dispondrás de la oportunidad de hallar el total de las acepciones reconocidas de la palabra Módulo:auto cat, sino que también podrás conocer su etimología, sus singularidades y podrás saber el modo en que se dice la palabra Módulo:auto cat en singular y en plural. Todo aquello que necesitas saber acerca de la palabra Módulo:auto cat lo tienes aquí. La definición de Módulo:auto cat a que tengas más acierto e idoneidad cuando llegue el momento de charlar o escribir tus piezas. Conocer la definición deMódulo:auto cat, de la misma manera que los significados de otras palabras, fortifican el léxico y nos brindan mayores y mejores recursos lingüísticos.

Documentación del módulo


Módulo que genera estructura automática para las páginas de las Categorías.

Uso

{{auto cat}}

Subpáginas

Esta documentación está transcluida desde Módulo:auto cat/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 export = {}

local insert = table.insert
local concat = table.concat
local m_str = require("Módulo:String")

local strexplode = m_str.explode_utf8
local strfind = m_str.find
local strmatch = m_str.match
local strsub = m_str.gsub
local strsplit = m_str.split
local strlower = m_str.lower
local strupper = m_str.upper
local strucfirst = m_str.ucfirst
local strlcfirst = m_str.lcfirst
local substr = m_str.sub
local strlen = m_str.len
local m_leng = require("Módulo:lenguas")
local m_nombres = mw.loadData("Módulo:lenguas/nombre_a_cod")

local WIKCIONARIO = 1
local COD = 2
local SWADESH = 3
local TRADUCCIONES = 4
local RIMAS = 5
local PRON_GRAF = 6
local ETIMOLOGIA = 7
local GRAMATICA = 8
local CONTEXTO = 9
local LENGUAS = 10
local PLANTILLAS = 11
local MANTENIMIENTO = 12
local POR_IDIOMA = 13
local USUARIOS = 14
local ESCRITURAS = 15

local function obtener_alfabeto(args)
	-- por el momento, si no está standardChars, entonces no genero el alfabeto.
	-- En un futuro, podría hacer que genere el alfabeto que provee directamente el script,
	-- pero hay que implementar la función que devuelva eso porque la que está ahora mismo devuelve un rango de caracteres en regex
	if not args or not args.standardChars then 
		return ""
	end
	local ignorar_script = { = true,  = true}
	local abc = {}
	if type(args.standardChars) == "string" then
		abc = args.standardChars
	else
		local m_sc = require("Módulo:scripts")
		for script in args:gmatch("(+)%s*,?%s*") do -- tomo todos los scripts que haya, y para cada uno busco el alfabeto
			if script == "All" then
				return ""
			end
			if not ignorar_script then
				local chars = m_sc.getByCode(script):getCharacters()
				script_ = args.standardChars
				if script_ then 
					insert(abc, strexplode(strupper(script_)))
				end
			end
		end
	end
	local t = {}
	for _,alfabeto in ipairs(abc) do
		if alfabeto then
			local mem = { = true} --ignoro el guion porque eso es parte de los regex en el caso de los alfabetos obtenidos directo del script
			insert(t, "<div style=\"font-size:90%; text-align:center\">\n")
			insert(t, "{|class=\"plainlinks\" align=\"center\" style=\"padding:3px 15px 3px 15px;\"\n")
			insert(t, "|style=\"text-align: center; font-weight:bold; font-size:100%; padding-left:15px; padding-right:15px\"|\n")
			local pg = args
			for i,c in ipairs(alfabeto) do
				if not mem then
					mem = true
					insert(t, "&nbsp;&nbsp;\n")
				end
			end
			insert(t, "|}\n</div>\n")
		end
	end
	return concat(t)
end

local function generar_titulo(texto, args)
	local t = {}
	insert(t, "<div style=\"background-color:#f6f6f6; border:1px dotted #ABCDEF; padding:8px; width:95%; margin:0 auto;\">\n")
	if texto then
		if args then
			insert(t, "<div style=\"font-size:110%; text-align:center\">"..args..": "..texto)
		else
			insert(t, "<div style=\"font-size:110%; text-align:center\">"..texto)
		end
		if args then
			insert(t, "__HIDDENCAT__<br>Esta es una categoría de mantenimiento que no se muestra directamente en los artículos. Si deseas habilitar la visualización de estas categorías, puedes hacerlo en ].")
		end
		insert(t, "</div>\n")
	end
	return concat(t)..obtener_alfabeto(args).."</div>\n"
end

local function generar_aviso(tipo, texto)
	local header = {
		 = "<table style=\"aviso\" class=\"plainlinks ambox ambox-notice\">"
	}
	
	local imagen = {
		 = "]"
	}
	
	return header.."<tr><td class=\"ambox-image\"><div style=\"width:52px;\">"..imagen.."</div></td><td class=\"ambox-text\">"..texto.."</td></tr></table>"
end

local function generar_categorias(padres, args)
	if not args then
		return padres
	end
	local padres_ = {}
	for _,padre in ipairs(padres) do
		if padre and padre ~= "" then
			insert(padres_, args..":"..padre)
		else
			insert(padres_, args..'| ')
		end
	end
--	if args then
--		insert(padres_,"Wikcionario")
--	end
    return padres_
end

local handlers = {}

-- Detección de "Wikcionario"
handlers =
function(clave, args)
	if clave == "Wikcionario" then
		args = true
	end
end

-- Detección de código de idioma en mayúscula
handlers = 
function(clave, args)
	local x,y,z
	if strfind(clave, "^%u%u+$") or strfind(clave, "^%u%u+%-%u%u+$") or strfind(clave, "^%u%u+%-%u%u+%-%u%u+$") then
		x = strlower(clave)
		y = clave
		z = m_leng.cod_a_idioma(x)
	end
	if x and y and z then
		args = x
		args = y
		args = z
		args = strucfirst(z)
		return false
	end
	return nil
end

--Lista Swadesh
handlers = 
function(clave, args)
	if clave ~= "Lista Swadesh" then
		return nil
	end
	return true, generar_titulo("Lista de ], concepto del lingüista ].", args), generar_categorias({""}, args)
end

--Traducciones: debería estar en mantenimiento??
handlers =
function (clave, args)
	local m = {strmatch(clave, "^(+)%-(+)$")}
	
	if not m or not m then
		m = strfind(clave, "^Traducciones desde el español$")
		if not m then
			return nil
		end
		args = true
		return true, generar_titulo("En esta categoría se encuentran todas las entradas de traducción desde el español.", args), {}
	end
	
	local a = strlcfirst(m)
	local b = strlcfirst(m)
	
	local idioma1, idioma2 = m_nombres, m_nombres
	
	if not idioma1 or not idioma2 then
		return nil
	end
	args = true
	return true, generar_titulo("En esta categoría se encuentran todas las entradas de traducción del idioma "..a.." al "..b..".", args), {"Traducciones desde el "..a}
end

--Rimas
handlers =
function (clave, args)
	if clave == "Rimas" then
		if args == args then
			args = true
			return true, generar_titulo("Lista de rimas.", args), generar_categorias({""}, args)
		else
			args = true
			return nil
		end
	elseif args then
		return true, generar_titulo("Lista de rimas con -"..clave..".", args), generar_categorias({"Rimas|"..clave}, args)
	end
	return nil
end

-- Pron-graf
handlers = 
function(clave, args)
	local padres = mw.loadData("Módulo:auto cat/pron-graf")
	if not padres then
		return nil
	end
	if clave == "Palabras sin transcripción fonética" then
		args = true
		args = true
	end
	return true, generar_titulo("Lista de "..strlcfirst(clave)..".", args), generar_categorias(padres, args)
end

-- Etimología
handlers =
function (clave, args)
	-- Etimología de otro idioma
	local m = {strmatch(clave, "^Palabras provenientes del (+)$")}
	if m then
		args = true
		return true, generar_titulo("Lista de "..strlcfirst(clave)..".", args),  generar_categorias({"Palabras por idioma de origen|"..m}, args)
	end
	m = {strmatch(clave, "^Palabras documentadas desde el siglo +$")}
	if m then
		args = true
		return true, generar_titulo("Lista de "..strlcfirst(clave)..".", args),  generar_categorias({"Palabras por época de origen"}, args)
	end
	-- Prefijos, infijos, sufijos
	m = {strmatch(clave, "^Palabras con el prefijo (.*)$")}
	if m then
		args = true
		return true, generar_titulo("Lista de "..strlcfirst(clave)..".", args),  generar_categorias({"Palabras formadas por prefijación|"..m}, args)
	end
	m = {strmatch(clave, "^Palabras con el infijo (.+)$")}
	if m then
		args = true
		return true, generar_titulo("Lista de "..strlcfirst(clave)..".", args),  generar_categorias({"Palabras formadas por infijación|"..m}, args)
	end
	m = {strmatch(clave, "^Palabras con el sufijo -(.+)$")}
	if m then
		args = true
		return true, generar_titulo("Lista de "..strlcfirst(clave)..".", args),  generar_categorias({"Palabras formadas por sufijación|"..m}, args)
	end
	if clave == "Palabras de etimología sin precisar" then
		args = true
		args = true
	end
	-- Otros tipos de etimologías
	local padres = mw.loadData("Módulo:auto cat/etimología")
	if not padres then
		return nil
	end
	
	return true, generar_titulo("Lista de "..strlcfirst(clave)..".", args), generar_categorias(padres, args)
end

--Gramática
handlers =
function (clave, args)
	local padres = mw.loadData("Módulo:auto cat/gramática")
	if not padres then
		return nil
	end
	args = true
	return true, generar_titulo("Lista de "..strlcfirst(clave)..".", args), generar_categorias(padres, args)	
end

--Csem, ambito, uso
handlers =
function (clave, args)
	if strfind(clave, "^Idiomas de ") then
		return true, generar_titulo(clave..".", args), generar_categorias({"Idiomas"}, args)	
	end
	local padres = mw.loadData("Módulo:auto cat/uso")
	if padres then
		return true, generar_titulo("Lista de "..clave..".", args), generar_categorias(padres, args)
	end
	
	local padres = mw.loadData("Módulo:auto cat/campos semánticos")
	if padres then
		return true, generar_titulo("Lista de términos relacionados con "..strlcfirst(clave)..".", args), generar_categorias(padres, args)
	end
	
	local padres = mw.loadData("Módulo:auto cat/ámbito")
	if padres then
		args = true
		return true, generar_titulo("Lista de términos propios de "..clave..".", args), generar_categorias(padres, args)
	end
	
	-- casos especiales (serán muchos)
	--- Topónimos
	m = {strmatch(clave, "^Topónimos de (.+)$")}
	if m then
		return true, generar_titulo("Lista de "..strlcfirst(clave), args), generar_categorias({'Topónimos|'..m}, args)	
	end
	return nil
	
end

--Nombre de idioma o familia
handlers =
function (clave, args)
	clave = strlcfirst(clave)
	local cod = m_nombres
	if not cod then
		return nil
	end
	
	local es_familia = strmatch(clave, "^lenguas")

	local idioma
	if not es_familia then
		idioma = m_leng.cod_a_idioma(cod)
	else
		idioma = m_leng.cod_a_familia(cod)
	end
	local dag, familia = m_leng.obtener_dag(idioma, es_familia)
	local arbol = require("Módulo:DAG").dagAHtml(dag, "Árbol genealógico")
	
	local t = {}
	local i = 1
	local function insert(s)
		t = s
		i = i + 1
	end
	
	local cat = {}
	local i_ = 1
	local function insert_cat(s)
		cat = s
		i_ = i_ + 1
	end
	
	-- En realidad final va al comienzo de todo, me confundí xd
	local final = {}
	local i__ = 1
	local function insert_final(s)
		final = s
		i__ = i__ + 1
	end
	
	
	insert("=== Información ===\n")
	insert(":* '''Código''': <code>"..cod.."</code>\n")
	insert(":* '''Nombre canónico''': "..clave.."\n")
	insert(":* '''ID de Wikidata''': ).." "..tostring(idioma).."]\n")
	
	if familia then
		insert(":* '''Familia''': ]\n")
		insert_cat(familia)
	else
		insert_cat("Lenguas")
	end
	
	if not es_familia then
		insert(":* '''Script(s)''': ")
		
		for script in idioma:gmatch("(+)%s*,?%s*") do
			insert("] ")
			--insert_cat("Script "..script)
		end
		insert_cat("Idiomas")
		insert("\n")
	end
	
	if idioma.otherNames then
		insert(":* '''Otros nombres''': ")
		for l,n in ipairs(idioma.otherNames) do
			if l == 1 then
				insert(n)	
			else
				insert(", "..n)
			end
		end
		insert(".\n")
	end
	
	insert("=== Véase también ===\n")
	if not es_familia then
		insert(":* ] ] en el Wikcionario.\n")
	end
	
	local titulo_wikipedia = mw.wikibase.sitelink("Q"..tostring(idioma), 'eswiki')
	if titulo_wikipedia then
		insert(":* ] ] en Wikipedia.\n")
	end
	
	insert(":* ] ).."|Entrada]] en Wikidata.\n")
	insert(":* ] ] en Wikimedia Commons.\n")
	--insert(":* ] para nombrar entradas.\n")
	
	if not es_familia then
		insert(":* ] completa de idiomas.\n")	
	else
		insert(":* ] completa de familias.\n")
	end
	
	local im = mw.title.new("Lang-"..cod..".gif", 6)
    if im and im.fileExists then
    	insert_final("]\n\n")
    end

	
	insert_final("Esta es la categoría principal ")
	if not es_familia then
		insert_final("del idioma "..clave..".\n")
	else
		insert_final("de las "..clave..".\n")
	end
	
	local hay_arg = false
	for j, arg in ipairs(args) do
		if j == 1 then
			insert_final("Se habla en: .."]]")
			insert_cat("Idiomas de "..args)
		else
			insert_final(", .."]]")
			insert_cat("Idiomas de "..args)
		end
		hay_arg = true
	end
	
	if hay_arg then
		insert_final(".\n")	
	end
  
	-- https://stackoverflow.com/questions/31455768/html-table-cell-spacing-only-between-cells-no-outer-one
	return true, "<table border=0 cellspacing=0 cellpadding=0 style=\"margin:-10px;width:99.9%;border-spacing:10px;\">\n<tr>\n<td style=\"text-align:left;vertical-align:top;\">\n"..concat(final)..concat(t).."</td>\n<td style=\"text-align:center;\">\n"..arbol.."</td>\n</tr>\n</table>\n", cat
end

-- Plantillas (muy ampliable)
handlers =
function (clave, args)
	m = {}
	if strmatch(clave, "Plantillas de flexión de") 
		or strmatch(clave, "Plantillas auxiliares de flexión")
		or strmatch(clave, "Plantillas de mutación") then
		args = true
		m = {"Plantillas de flexión"}
	elseif strmatch(clave, "Plantillas$") then
		args = true
		m = {}
	elseif strmatch(clave, "Plantillas") then
		args = true
		m = {"Plantillas"}
	end

	local padres = m
	if not padres then
		return nil	
	end
	return true, generar_titulo("Lista de "..strlcfirst(clave)..".", args), generar_categorias(padres, args)	
end

-- Detección de Mantenimiento
handlers = 
function(clave, args)
--	if not args then
--		return nil
--	end
	local m = mw.loadData("Módulo:auto cat/mantenimiento")
	if m then
		return true, generar_aviso("info", "__HIDDENCAT__"..
			"Esta categoría es de mantenimiento"..
			" y por lo tanto no se mostrará directamente. Si desea que se "..
			"muestre en cada página, puede cambiar "..
			"]."),
			generar_categorias(m, args)
		
		-- TODO: Nombres de categorías. ¿Eliminar Wikicionario:? Creo q es razonable 
		-- dejar esas categorías sólo para páginas del espacio Wikcionario
	end
end

-- Contrucción de metacategorías por idioma
handlers = 
function(clave, args)
	if args then
		return nil -- por las dudas	
	end
	
	local m = {strmatch(clave, "^(.+) por idioma$")}
	local clave_ = m
	
	if clave_ then
		args = true -- útil?
		for i,handler in ipairs(handlers) do -- cómo evito que vuelva a pasar recursivamente de forma ilimitada
			local padres_ = {}
	    	local terminar, msj, padres = handler(clave_, args)
	    	if terminar == true then
				for i, padre_ in ipairs(padres) do
					if padre_ ~= "" then
	    				insert(padres_, padre_..' por idioma| ')
						insert(padres_, clave_..'| ')
	    			else
	    				-- puede tener un mejor nombre? creo que sí
	    				insert(padres_, 'Metacategorías espejo| ')
	    				insert(padres_, clave_..'| ')
	    			end
	    		end	    		
				return true, 
					-- quizá mejorar este título
					generar_titulo("Metacategoría de ''"..strlcfirst(clave_).."'' por idioma", args), 
					generar_categorias(padres_, args)			
    		elseif terminar == false then -- si no es nil
    			break
	    	end
	    end
	end
	return nil
end

-- Usuarios por idioma, debería fusionarlo con el handler de arriba?
handlers = 
function(clave, args)
	local m = {strmatch(clave, "^Usuarios por idioma %- ?(.+)$")}
	
	if not m then
		return nil
	end
	
	local c = {"0", "básico", "intermedio", "avanzado", "experto", "nativo"}
	local r = nil
	local s = nil
	for _,q in ipairs(c) do
		local m2 = {strmatch(m, "^(.+) ?"..q.."$")}
		if m2 then
			r = m2
			s = q
			break
		end
	end
	
	local padres_ = {}
	
	if not r then
		insert(padres_, "Usuarios por idioma")
		return true, generar_titulo("Lista de usuarios que hablan "..m, args), generar_categorias(padres_, args)
	else
		insert(padres_, "Usuarios por idioma - "..r)
		if s == "0" then
			return true, generar_titulo("Lista de usuarios que NO entienden "..r, args), generar_categorias(padres_, args)
		else
			return true, generar_titulo("Lista de usuarios que hablan "..r..", nivel "..s, args), generar_categorias(padres_, args)
		end
	end
end

-- Escrituras
handlers =
function(clave, args)
	local m_escrituras = mw.loadData("Módulo:auto cat/escrituras")
	local codigos = m_escrituras
	if codigos then
		for _,cod in ipairs(codigos) do
			if cod == args then
				return true, generar_titulo("Lista de palabras pertenecientes a la escritura "..clave..".", args), generar_categorias({"Escrituras"}, args)
			end
		end
	end
	local m = strfind(clave, "^Escrituras$")
	if m then
		return true, generar_titulo("Lista de escrituras.", args), generar_categorias({}, args)
	end
	return nil
end

function export.categorizar(frame)
	local title = mw.title.getCurrentTitle().fullText
    if title == "Plantilla:auto cat" then
    	return "Use esta plantilla en el espacio de Categorías."	
    end
	
	local pagename = mw.title.getCurrentTitle().text
	if pagename == "Módulo:auto cat" then
		return nil	
	end
	    
	local ns = mw.title.getCurrentTitle().namespace
    assert(ns == 14, "La plantilla sólo puede utilizarse en el espacio de Categorías")
    
    local args = frame:getParent().args
    args = pagename
    
    local claves = strsplit(pagename, ":")
    local L = #claves
    args = 1
    args = L
    
	local t = {}
    
    while args <= L do
    	local clave = claves]
	    for i,handler in ipairs(handlers) do
	    	local terminar, msj, padres = handler(clave, args)
	    	if terminar == true then
    			insert(t, msj)
    			-- Paso 1: metacategorías
    			-- Caso a: "no meta" = no metacategoría x idioma
    			if args then
    				-- nada
    			-- Caso b: sin sufijo
    			elseif args and L == 2 and args then
    				insert(t, ".."]]")
    			-- Caso c: caso general
    			elseif args and L == 2 then 
    				insert(t, ".."]]")
    			-- Caso d: eventualmente eliminar Categorías:Wikicionario: 
    			-- salvo para páginas realmente internas. Por ahora mantener
    			elseif args and args and L == 3 then -- caso para Categoría:Wikcionario:XXXX
    				insert(t, ".."|"..args.."]]")
    			end
    			-- Paso 2: árbol de categorías
    			for i,padre in ipairs(padres) do
    				-- Caso a: Categorías fundamentales. Padre "", sin código
    				if not args and not args and padre == "" then
    					insert(t, "]\n")
    				elseif padre ~= "" then
    					insert(t, "]\n")
    				end
    			end
    			return concat(t)
    		elseif terminar == false then -- si no es nil
    			break
	    	end
	    end
	    args = args + 1
    end
	if args then
		return nil
	end
    error("La categoría no puede ser reconocida.")
end

return export

Separar Módulo:auto cat en sílabas

Te ofrecemos la oportunidad de que además todo aquello que ahora ya sabes en lo tocante a la palabra Módulo:auto cat, ahora también aprendas de cómo separarla en sílabas. Si quieres aprender a dividir si quieres aprender a separar Módulo:auto cat en sílabas.

Listado de errores ortográficos de Módulo:auto cat

Más abajo podrás seguir el link una lista con los principales errores ortográficos, con la finalidad de que los tomes en consideración y sepas el modo de no incurrir en ellos.Sin más demora, aquí tienes el listado de errores ortográficos de Módulo:auto cat