De Muysc cubun - Lengua Muisca

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