More actions
mNo edit summary |
mNo edit summary |
||
(10 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
local mArguments --initialize lazily | local mArguments -- initialize lazily | ||
local getArgNums = require('Module:Common').getArgNums | local getArgNums = require('Module:Common').getArgNums | ||
local p = {} | local p = {} -- Initialize the p table to hold functions | ||
-- Implements {{flexbox}} from the frame | |||
--Implements {{flexbox}} from the frame | |||
function p.flexbox(frame) | function p.flexbox(frame) | ||
mArguments = require('Module:Arguments') | |||
return p._flexbox(mArguments.getArgs(frame), frame) | |||
end | end | ||
function p._flexbox(args, frame) | function p._flexbox(args, frame) | ||
if not args then | |||
return 'Missing arguments' | |||
end | |||
local html = mw.html.create('div'):addClass('template-flexbox') | |||
local columns = tonumber(args['columns']) or 3 -- Default to 3 columns if not passed | |||
local gap = args['gap'] or '0.5rem' | |||
local justify = args['justify'] or 'flex-start' | |||
local direction | |||
if columns then | |||
direction = 'row' | |||
end | |||
html:css('--template-flexbox-columns', columns) | |||
html:css('--template-flexbox-gap', gap) | |||
html:css('--template-flexbox-justify', justify) | |||
-- Loop over content arguments | |||
for i, _ in ipairs(getArgNums('content', args)) do | |||
local num = tostring(i) | |||
local content = args['content' .. num] | |||
if not content then return end | |||
local item = mw.html.create('div'):addClass('template-flexbox-item') | |||
item:wikitext(content) | |||
html:node(item) | |||
end | |||
return frame:extensionTag { | |||
name = 'templatestyles', args = { src = 'Module:Flexbox/styles.css' } | |||
} .. tostring(html) | |||
end | end | ||
-- Ensure the module returns the table 'p' | |||
return p | return p |
Latest revision as of 01:16, 29 December 2024
Documentation for this module may be created at Module:Flexbox/doc
local mArguments -- initialize lazily
local getArgNums = require('Module:Common').getArgNums
local p = {} -- Initialize the p table to hold functions
-- Implements {{flexbox}} from the frame
function p.flexbox(frame)
mArguments = require('Module:Arguments')
return p._flexbox(mArguments.getArgs(frame), frame)
end
function p._flexbox(args, frame)
if not args then
return 'Missing arguments'
end
local html = mw.html.create('div'):addClass('template-flexbox')
local columns = tonumber(args['columns']) or 3 -- Default to 3 columns if not passed
local gap = args['gap'] or '0.5rem'
local justify = args['justify'] or 'flex-start'
local direction
if columns then
direction = 'row'
end
html:css('--template-flexbox-columns', columns)
html:css('--template-flexbox-gap', gap)
html:css('--template-flexbox-justify', justify)
-- Loop over content arguments
for i, _ in ipairs(getArgNums('content', args)) do
local num = tostring(i)
local content = args['content' .. num]
if not content then return end
local item = mw.html.create('div'):addClass('template-flexbox-item')
item:wikitext(content)
html:node(item)
end
return frame:extensionTag {
name = 'templatestyles', args = { src = 'Module:Flexbox/styles.css' }
} .. tostring(html)
end
-- Ensure the module returns the table 'p'
return p