De Muysc cubun - Lengua Muisca
m |
m |
||
| Línea 1: | Línea 1: | ||
local p = {} | local p = {} | ||
| − | -- Limpia el nombre de la página: | + | -- 1. Limpia el nombre de la página: "nysqua(2)" -> "nysqua" |
| − | |||
local function cleanPageName(pageName) | local function cleanPageName(pageName) | ||
pageName = mw.text.trim(pageName or "") | pageName = mw.text.trim(pageName or "") | ||
| + | -- Quita el bloque de paréntesis: (2), (3), etc. | ||
pageName = mw.ustring.gsub(pageName, "%s*%b()", "") | pageName = mw.ustring.gsub(pageName, "%s*%b()", "") | ||
| − | return pageName | + | -- Quita números sueltos por si acaso |
| + | pageName = mw.ustring.gsub(pageName, "%d+", "") | ||
| + | return mw.text.trim(pageName) | ||
end | end | ||
| − | -- | + | -- 2. Normaliza la clase para que el script sepa qué terminación buscar |
| − | |||
local function normalizeClass(rawClass) | local function normalizeClass(rawClass) | ||
rawClass = mw.text.trim(rawClass or "") | rawClass = mw.text.trim(rawClass or "") | ||
| Línea 20: | Línea 21: | ||
return "su." | return "su." | ||
end | end | ||
| − | |||
return "" | return "" | ||
end | end | ||
| − | -- | + | -- 3. Extrae la raíz pura: "nysqua" -> "ny" |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
local function getRoot(pageName, clase, manualRoot) | local function getRoot(pageName, clase, manualRoot) | ||
manualRoot = mw.text.trim(manualRoot or "") | manualRoot = mw.text.trim(manualRoot or "") | ||
| Línea 49: | Línea 31: | ||
end | end | ||
| − | local | + | local fullVerb = cleanPageName(pageName) |
| + | local root = fullVerb | ||
if clase == "sq." then | if clase == "sq." then | ||
| − | root = mw.ustring.gsub( | + | root = mw.ustring.gsub(fullVerb, "squa$", "") |
elseif clase == "su." then | elseif clase == "su." then | ||
| − | root = mw.ustring.gsub(root, " | + | root = mw.ustring.gsub(fullVerb, "suca$", "") |
| + | end | ||
| + | |||
| + | -- Si la clase no se especificó o no coincide, intento genérico | ||
| + | if root == fullVerb then | ||
| + | root = mw.ustring.gsub(fullVerb, "s[uq]ua$", "") | ||
end | end | ||
| Línea 60: | Línea 48: | ||
end | end | ||
| + | -- Funciones auxiliares para las bases verbales | ||
local function buildPerfective(root) | local function buildPerfective(root) | ||
return root | return root | ||
| Línea 65: | Línea 54: | ||
local function buildImperfective(root, clase) | local function buildImperfective(root, clase) | ||
| − | if | + | if clase == "su." then |
| − | + | return root .. "suca" | |
| − | |||
| − | return root .. " | ||
else | else | ||
| − | return root .. " | + | return root .. "squa" |
end | end | ||
end | end | ||
local function buildIrrealis(root) | local function buildIrrealis(root) | ||
| − | return root .. " | + | return root .. "nga" |
end | end | ||
| + | -- FUNCIÓN PRINCIPAL | ||
function p.render(frame) | function p.render(frame) | ||
local args = frame:getParent().args | local args = frame:getParent().args | ||
| − | |||
local rawClass = args.clase or args.tipo or "" | local rawClass = args.clase or args.tipo or "" | ||
| − | |||
local manualRoot = args.raiz or "" | local manualRoot = args.raiz or "" | ||
local clase = normalizeClass(rawClass) | local clase = normalizeClass(rawClass) | ||
| − | |||
| − | |||
local pageName = mw.title.getCurrentTitle().text | local pageName = mw.title.getCurrentTitle().text | ||
local root = getRoot(pageName, clase, manualRoot) | local root = getRoot(pageName, clase, manualRoot) | ||
| − | if root == "" then | + | if root == "" or root == pageName then |
| − | return "<span style='color:red;'>Error: | + | return "<span style='color:red;'>Error: No se pudo extraer la raíz de '" .. pageName .. "'. Revisa la clase (sq. o su.).</span>" |
end | end | ||
local persons = { | local persons = { | ||
| − | {" | + | {"1.ª sg. (yo)", "z-"}, |
| − | {" | + | {"2.ª sg. (tú)", "m-"}, |
| − | {"3", | + | {"3.ª (él/ella)", "a-"}, |
| − | {" | + | {"1.ª pl. (nosotros)", "chi-"}, |
| − | {" | + | {"2.ª pl. (ustedes)", "mi-"} |
} | } | ||
| Línea 108: | Línea 92: | ||
local irrealisBase = buildIrrealis(root) | local irrealisBase = buildIrrealis(root) | ||
| + | -- Construcción de la tabla HTML | ||
local html = mw.html.create("table") | local html = mw.html.create("table") | ||
:addClass("wikitable") | :addClass("wikitable") | ||
| − | :css("width", " | + | :css("width", "100%") |
| − | :css(" | + | :css("max-width", "600px") |
local header = html:tag("tr") | local header = html:tag("tr") | ||
header:tag("th"):wikitext("Persona") | header:tag("th"):wikitext("Persona") | ||
| − | header:tag("th"):wikitext("Perfectivo") | + | header:tag("th"):wikitext("Perfectivo (Raíz)") |
header:tag("th"):wikitext("Imperfectivo") | header:tag("th"):wikitext("Imperfectivo") | ||
header:tag("th"):wikitext("Irrealis") | header:tag("th"):wikitext("Irrealis") | ||
| Línea 124: | Línea 109: | ||
local row = html:tag("tr") | local row = html:tag("tr") | ||
| − | row:tag("td"):wikitext(label) | + | row:tag("td"):css("font-weight", "bold"):wikitext(label) |
row:tag("td"):wikitext(prefix .. perfectiveBase) | row:tag("td"):wikitext(prefix .. perfectiveBase) | ||
row:tag("td"):wikitext(prefix .. imperfectiveBase) | row:tag("td"):wikitext(prefix .. imperfectiveBase) | ||
Revisión del 08:41 25 mar 2026
La documentación para este módulo puede ser creada en Módulo:Conjugador/doc
local p = {}
-- 1. Limpia el nombre de la página: "nysqua(2)" -> "nysqua"
local function cleanPageName(pageName)
pageName = mw.text.trim(pageName or "")
-- Quita el bloque de paréntesis: (2), (3), etc.
pageName = mw.ustring.gsub(pageName, "%s*%b()", "")
-- Quita números sueltos por si acaso
pageName = mw.ustring.gsub(pageName, "%d+", "")
return mw.text.trim(pageName)
end
-- 2. Normaliza la clase para que el script sepa qué terminación buscar
local function normalizeClass(rawClass)
rawClass = mw.text.trim(rawClass or "")
rawClass = mw.ustring.lower(rawClass)
if mw.ustring.find(rawClass, "sq") then
return "sq."
elseif mw.ustring.find(rawClass, "su") then
return "su."
end
return ""
end
-- 3. Extrae la raíz pura: "nysqua" -> "ny"
local function getRoot(pageName, clase, manualRoot)
manualRoot = mw.text.trim(manualRoot or "")
if manualRoot ~= "" then
return manualRoot
end
local fullVerb = cleanPageName(pageName)
local root = fullVerb
if clase == "sq." then
root = mw.ustring.gsub(fullVerb, "squa$", "")
elseif clase == "su." then
root = mw.ustring.gsub(fullVerb, "suca$", "")
end
-- Si la clase no se especificó o no coincide, intento genérico
if root == fullVerb then
root = mw.ustring.gsub(fullVerb, "s[uq]ua$", "")
end
return root
end
-- Funciones auxiliares para las bases verbales
local function buildPerfective(root)
return root
end
local function buildImperfective(root, clase)
if clase == "su." then
return root .. "suca"
else
return root .. "squa"
end
end
local function buildIrrealis(root)
return root .. "nga"
end
-- FUNCIÓN PRINCIPAL
function p.render(frame)
local args = frame:getParent().args
local rawClass = args.clase or args.tipo or ""
local manualRoot = args.raiz or ""
local clase = normalizeClass(rawClass)
local pageName = mw.title.getCurrentTitle().text
local root = getRoot(pageName, clase, manualRoot)
if root == "" or root == pageName then
return "<span style='color:red;'>Error: No se pudo extraer la raíz de '" .. pageName .. "'. Revisa la clase (sq. o su.).</span>"
end
local persons = {
{"1.ª sg. (yo)", "z-"},
{"2.ª sg. (tú)", "m-"},
{"3.ª (él/ella)", "a-"},
{"1.ª pl. (nosotros)", "chi-"},
{"2.ª pl. (ustedes)", "mi-"}
}
local perfectiveBase = buildPerfective(root)
local imperfectiveBase = buildImperfective(root, clase)
local irrealisBase = buildIrrealis(root)
-- Construcción de la tabla HTML
local html = mw.html.create("table")
:addClass("wikitable")
:css("width", "100%")
:css("max-width", "600px")
local header = html:tag("tr")
header:tag("th"):wikitext("Persona")
header:tag("th"):wikitext("Perfectivo (Raíz)")
header:tag("th"):wikitext("Imperfectivo")
header:tag("th"):wikitext("Irrealis")
for _, personData in ipairs(persons) do
local label = personData[1]
local prefix = personData[2]
local row = html:tag("tr")
row:tag("td"):css("font-weight", "bold"):wikitext(label)
row:tag("td"):wikitext(prefix .. perfectiveBase)
row:tag("td"):wikitext(prefix .. imperfectiveBase)
row:tag("td"):wikitext(prefix .. irrealisBase)
end
return tostring(html)
end
return p
