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

Module:Transclude

From Teriock
Revision as of 11:45, 14 January 2025 by Gpe (talk | contribs)

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

local p = {}

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

-- Main function to transclude pages
function p.transclude(frame)
    -- Get the raw input
    local input = frame.args[1] or ''
    
    -- Remove <DynamicPageList> tags if present
    input = input:gsub('<DynamicPageList>.*</DynamicPageList>', function(dpl)
        -- Extract just the results, removing the DPL configuration
        return frame:preprocess(dpl)
    end)
    
    local output = {}
    
    -- Split input by any whitespace (newlines or spaces)
    for page in mw.text.split(input, '%s+', true) do
        page = trim(page)
        if page ~= '' then
            table.insert(output, string.format('{{%s}}', page))
        end
    end
    
    -- Join all transclusions with newlines
    return table.concat(output, '\n')
end

-- Function to handle direct template calls
function p.transcludeFromTemplate(frame)
    local parent = frame:getParent()
    return p.transclude(parent)
end

return p