Module:Parser: Difference between revisions

From 20R1
No edit summary
No edit summary
Line 24: Line 24:
     -- Build SMW property assignments
     -- Build SMW property assignments
     local output = {}
     local output = {}
     for _, attendee in ipairs(items) do
     for _, item in ipairs(items) do
         -- Use [[Property:Attendee::value]] syntax for SMW
         -- Use [[Property:Attendee::value]] syntax for SMW
         table.insert(output, "[["..prop.."::" .. hide ..  mw.text.encode(attendee) .. "]]")
         table.insert(output, "[["..prop.."::" ..  mw.text.encode(item) .. "|]]")
     end
     end



Revision as of 02:40, 17 November 2025

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

local p = {}

-- Trim whitespace from a string
local function trim(s)
    return s:match("^%s*(.-)%s*$")
end

-- Main entry point called from the template
function p.parse(frame)
    local args = frame.args
    local hide = args.hide or ""
    local prop = args.property or ""
    local list = args.list or ""

    -- Split by comma (allowing optional spaces around commas)
    local items = {}
    for item in list:gmatch("[^,]+") do
        local cleaned = trim(item)
        if cleaned ~= "" then
            table.insert(items, cleaned)
        end
    end

    -- Build SMW property assignments
    local output = {}
    for _, item in ipairs(items) do
        -- Use [[Property:Attendee::value]] syntax for SMW
        table.insert(output, "[["..prop.."::" ..  mw.text.encode(item) .. "|]]")
    end

    -- Join all assignments with newlines
    return table.concat(output, "\n")
end

return p