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

Module:Sort: Difference between revisions

From Teriock
Content deleted Content added
// via Wikitext Extension for VSCode
// via Wikitext Extension for VSCode
Line 24: Line 24:
pre = "{{Cat|ns=" .. frame.args['ns'] .. "|"
pre = "{{Cat|ns=" .. frame.args['ns'] .. "|"
post = " equipment}}"
post = " equipment}}"
end
if frame.args['sub'] then
pre = pre .. "{{Sub|Ability:"
post = post .. "}}"
end
end



Revision as of 03:22, 24 January 2025

Documentation for this module may be created at Module:Sort/doc

local p = {}

function p.parse(frame)

    local input = frame.args[1] or ""

    -- DPL-specific preprocessing
    input = input:gsub("%s*%|%s*", ",") -- Convert DPL separators to commas if present

    local pre = ""
    local post = ""
    if frame.args['wrap'] then
        pre = "{{L|" .. frame.args['wrap'] .. "|"
        post = "}}"
    end
    if frame.args['cat'] and frame.args['name'] and frame.args['ns'] then
        pre = "{{Cat|name=" .. frame.args['name'] .. "|ns=" .. frame.args['ns'] .. "|"
        post = "}}"
    end
    if frame.args['item'] and frame.args['name'] and frame.args['ns'] then
        pre = "{{Cat|name=" .. frame.args['name'] .. "|ns=" .. frame.args['ns'] .. "|"
        post = " equipment}}"
    elseif frame.args['item'] and frame.args['ns'] then
        pre = "{{Cat|ns=" .. frame.args['ns'] .. "|"
        post = " equipment}}"
    end
    if frame.args['sub'] then
        pre = pre .. "{{Sub|Ability:"
        post = post .. "}}"
    end

    local items = {}
    for item in string.gmatch(input, "([^,]+)") do
        local trimmed_item = item:match("^%s*(.-)%s*$") -- Trim whitespace
        if trimmed_item ~= "Weapon" then
            table.insert(items, pre .. trimmed_item .. post)
        end
    end

    table.sort(items)
    if frame.args['cat'] or frame.args['item'] then
        return frame:preprocess(table.concat(items, ""))
    else
        return frame:preprocess(table.concat(items, ", "))
    end
end

return p