More actions
Content deleted Content added
No edit summary |
No edit summary |
||
(16 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
local p = {} |
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) |
function p.transclude(frame) |
||
-- Get and preprocess the input |
|||
local |
local raw_input = frame.args[1] or '' |
||
local processed_input = 'yoggle' .. raw_input:gsub('E', 's') .. 'yoggle' |
|||
-- Debug output |
|||
-- Handle both newline-separated and space-separated inputs |
|||
return string.format( |
|||
local pages = {} |
|||
"Raw input:\n<pre>%s</pre>\n\nProcessed input:\n<pre>%s</pre>", |
|||
-- First split by newlines |
|||
⚫ | |||
for line in input:gmatch('[^\r\n]+') do |
|||
processed_input |
|||
-- Then split each line by spaces |
|||
⚫ | |||
for page in line:gmatch('%S+') do |
|||
table.insert(pages, page) |
|||
⚫ | |||
end |
|||
⚫ | |||
-- Process each page |
|||
for _, page in ipairs(pages) 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 |
end |
||
Latest revision as of 11:53, 14 January 2025
Documentation for this module may be created at Module:Transclude/doc
local p = {}
function p.transclude(frame)
-- Get and preprocess the input
local raw_input = frame.args[1] or ''
local processed_input = 'yoggle' .. raw_input:gsub('E', 's') .. 'yoggle'
-- Debug output
return string.format(
"Raw input:\n<pre>%s</pre>\n\nProcessed input:\n<pre>%s</pre>",
raw_input,
processed_input
)
end
return p