Module:Parser: Difference between revisions

From 20R1
Created page with "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 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..."
 
No edit summary
Line 9: Line 9:
function p.parse(frame)
function p.parse(frame)
     local args = frame.args
     local args = frame.args
    local hide = args.hide or ""
     local prop = args.property or ""
     local prop = args.property or ""
     local list = args.list or ""
     local list = args.list or ""
Line 25: Line 26:
     for _, attendee in ipairs(items) do
     for _, attendee in ipairs(items) do
         -- Use [[Property:Attendee::value]] syntax for SMW
         -- Use [[Property:Attendee::value]] syntax for SMW
         table.insert(output, "[["..prop.."::" .. mw.text.encode(attendee) .. "]]")
         table.insert(output, "[["..prop.."::" .. hide ..  mw.text.encode(attendee) .. "]]")
     end
     end



Revision as of 02:37, 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 _, attendee in ipairs(items) do
        -- Use [[Property:Attendee::value]] syntax for SMW
        table.insert(output, "[["..prop.."::" .. hide ..  mw.text.encode(attendee) .. "]]")
    end

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

return p