Toggle menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

Module:Gnoblin

From Deepest Lore
Revision as of 21:41, 30 March 2026 by Arvid Varg (talk | contribs)

Titles

! colspan="2" class="infobox-subheader" | Not on a character |-



! colspan="2" class="infobox-subheader" | |-

Gnoblin
Using the template
Gnoblin
Simple name only

local p = {}

function p.processTitle(frame)
    local input = frame.args[1] or ""

    -- Check if input already looks like a {{Title}} template
    if mw.ustring.match(input, "^%s*%{%{%s*[Tt]itle%s*[|}]") then
        return input
    end

   -- Otherwise, expand the template properly
    return frame:expandTemplate{
        title = "Title",
        args = { name = input }
    }
end

function p.stripHouse(frame)
    local name = frame.args[1]
    if not name or name == "" then
        name = mw.title.getCurrentTitle().text
    end

    local prefixes = { "House", "Clan", "Family", "Dynasty" }

    for _, prefix in ipairs(prefixes) do
        local pattern = "^[" .. mw.ustring.sub(prefix,1,1):lower() .. mw.ustring.sub(prefix,1,1):upper() .. "]" ..
                        mw.ustring.sub(prefix,2):lower() .. "%s+"
        name = mw.ustring.gsub(name, pattern, "")
    end

    return name
end

function p.unlink(frame)
    local text = frame.args[1] or ""
    text = mw.ustring.gsub(text, "[%[%]]", "")
    return text
end

function p.addParentCategory(frame)
    local subcat = frame.args[1] or ""
    subcat = mw.text.trim(subcat)
    if subcat == "" then return "" end

    -- Always include the specific subcategory
    local result = "[[Category:" .. subcat .. "]]"

    -- Determine parent category
    -- In this example, any subcategory containing "elf" gets parent "Elf"
    if mw.ustring.match(mw.ustring.lower(subcat), "elf") then
        result = result .. "\n[[Category:Elf]]"
    end

    return result
end

return p
Contents