De Muysc cubun - Lengua Muisca
m |
m |
||
| Línea 2: | Línea 2: | ||
-- Limpia el nombre de la página: | -- Limpia el nombre de la página: | ||
| − | -- | + | -- Quita espacios, números y paréntesis tipo (2), (3), etc. |
local function cleanPageName(pageName) | local function cleanPageName(pageName) | ||
pageName = mw.text.trim(pageName or "") | pageName = mw.text.trim(pageName or "") | ||
| + | -- Elimina cualquier cosa que esté entre paréntesis y los paréntesis mismos | ||
pageName = mw.ustring.gsub(pageName, "%s*%b()", "") | pageName = mw.ustring.gsub(pageName, "%s*%b()", "") | ||
| − | return pageName | + | -- Por seguridad, eliminamos cualquier número que haya quedado suelto al final |
| + | pageName = mw.ustring.gsub(pageName, "%d+", "") | ||
| + | return mw.text.trim(pageName) | ||
end | end | ||
| − | -- Detecta la clase | + | -- Detecta la clase (sq o su) |
| − | |||
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 22: | ||
return "su." | return "su." | ||
end | end | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
return "" | return "" | ||
end | end | ||
| − | -- | + | -- Lógica para extraer la raíz |
| − | |||
| − | |||
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 32: | ||
end | end | ||
| − | local | + | -- 1. Limpiamos el nombre: "nysqua(2)" -> "nysqua" |
| + | local fullVerb = cleanPageName(pageName) | ||
| + | local root = fullVerb | ||
| + | -- 2. Quitamos la terminación según la clase | ||
| + | -- Usamos "^" y "$" para asegurar que trate la palabra completa si es necesario, | ||
| + | -- pero aquí lo más importante es que ya no hay paréntesis. | ||
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 = mw.ustring.gsub(fullVerb, "suca$", "") |
end | end | ||
| − | + | -- Si por alguna razón la clase no coincide, intentamos una limpieza genérica | |
| − | end | + | if root == fullVerb then |
| + | root = mw.ustring.gsub(fullVerb, "s[uq]ua$", "") | ||
| + | end | ||
| − | |||
return root | return root | ||
end | end | ||
| − | + | -- ... (resto de funciones de construcción se mantienen igual) | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
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) | ||
| − | + | ||
| − | + | -- Obtenemos el título de la página actual | |
| − | local | + | local title = mw.title.getCurrentTitle().text |
| − | local root = getRoot( | + | local root = getRoot(title, clase, manualRoot) |
if root == "" then | if root == "" then | ||
| Línea 96: | Línea 70: | ||
end | end | ||
| − | + | -- (El resto del código para generar la tabla sigue aquí...) | |
| − | + | -- [Omitido por brevedad, pero usa la lógica de tu script original] | |
| − | + | ||
| − | + | -- Ejemplo rápido de retorno para que veas la raíz procesada | |
| − | + | return "La raíz identificada es: **" .. root .. "**" | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
end | end | ||
return p | return p | ||
Revisión del 08:34 25 mar 2026
La documentación para este módulo puede ser creada en Módulo:Conjugador/doc
local p = {}
-- Limpia el nombre de la página:
-- Quita espacios, números y paréntesis tipo (2), (3), etc.
local function cleanPageName(pageName)
pageName = mw.text.trim(pageName or "")
-- Elimina cualquier cosa que esté entre paréntesis y los paréntesis mismos
pageName = mw.ustring.gsub(pageName, "%s*%b()", "")
-- Por seguridad, eliminamos cualquier número que haya quedado suelto al final
pageName = mw.ustring.gsub(pageName, "%d+", "")
return mw.text.trim(pageName)
end
-- Detecta la clase (sq o su)
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
-- Lógica para extraer la raíz
local function getRoot(pageName, clase, manualRoot)
manualRoot = mw.text.trim(manualRoot or "")
if manualRoot ~= "" then
return manualRoot
end
-- 1. Limpiamos el nombre: "nysqua(2)" -> "nysqua"
local fullVerb = cleanPageName(pageName)
local root = fullVerb
-- 2. Quitamos la terminación según la clase
-- Usamos "^" y "$" para asegurar que trate la palabra completa si es necesario,
-- pero aquí lo más importante es que ya no hay paréntesis.
if clase == "sq." then
root = mw.ustring.gsub(fullVerb, "squa$", "")
elseif clase == "su." then
root = mw.ustring.gsub(fullVerb, "suca$", "")
end
-- Si por alguna razón la clase no coincide, intentamos una limpieza genérica
if root == fullVerb then
root = mw.ustring.gsub(fullVerb, "s[uq]ua$", "")
end
return root
end
-- ... (resto de funciones de construcción se mantienen igual)
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)
-- Obtenemos el título de la página actual
local title = mw.title.getCurrentTitle().text
local root = getRoot(title, clase, manualRoot)
if root == "" then
return "<span style='color:red;'>Error: no se pudo identificar la raíz.</span>"
end
-- (El resto del código para generar la tabla sigue aquí...)
-- [Omitido por brevedad, pero usa la lógica de tu script original]
-- Ejemplo rápido de retorno para que veas la raíz procesada
return "La raíz identificada es: **" .. root .. "**"
end
return p
