Module:Babel: Difference between revisions
Jump to navigation
Jump to search
Content deleted Content added
No edit summary |
Importing from https://meta.wikimedia.org/wiki/Module:Babel. |
||
| Line 8: | Line 8: | ||
maybeNocat = '|nocat=yes' |
maybeNocat = '|nocat=yes' |
||
end |
end |
||
return frame:preprocess('{{User '..v..maybeNocat..'}}') |
return frame:preprocess('{{User ' .. v .. maybeNocat .. '}}') |
||
end |
end |
||
| Line 15: | Line 15: | ||
getArgs = require('Module:Arguments').getArgs |
getArgs = require('Module:Arguments').getArgs |
||
end |
end |
||
local args = getArgs(frame, { |
local args = getArgs(frame, { |
||
wrappers = 'Template:Babel' |
|||
}) |
|||
local ret = mw.html.create('table') |
local ret = mw.html.create('table') |
||
:attr('role', 'presentation') |
|||
:addClass('userboxes') |
|||
:css({ |
|||
float = args.align or 'right', |
|||
['margin-left'] = (args.left or '1') .. 'em', |
|||
['margin-bottom'] = (args.bottom or '0') .. 'em', |
|||
width = (args.width or '248') .. 'px', |
|||
clear = args.align or 'right', |
|||
color = args.textcolor or '#000000', |
|||
border = (args.bordercolor or '#99B3FF') .. ' solid ' .. (args.solid or 1) .. 'px' |
|||
}) |
|||
local nocat = args.nocat and string.lower(args.nocat) == 'yes' |
local nocat = args.nocat and string.lower(args.nocat) == 'yes' |
||
if args.shadow and string.lower(args.shadow) == 'yes' then |
if args.shadow and string.lower(args.shadow) == 'yes' then |
||
ret:css({ |
|||
['box-shadow'] = '0 2px 4px rgb(0, 0, 0, 0.2)' |
|||
}) |
|||
end |
end |
||
ret:cssText( |
ret:cssText(args['extra-css'] or '') |
||
local color = args.color or 'inherit' |
local color = args.color or 'inherit' |
||
local row1 = ret:tag('tr') |
local row1 = ret:tag('tr') |
||
| Line 44: | Line 48: | ||
local body_cells = row2:tag('td') |
local body_cells = row2:tag('td') |
||
:css('vertical-align', 'middle !important') |
|||
local userboxes |
local userboxes |
||
-- Special message for when first argument is blank; otherwise treat it as normal |
-- Special message for when first argument is blank; otherwise treat it as normal |
||
| Line 51: | Line 55: | ||
userboxes = showUserbox(frame, args[1], nocat) |
userboxes = showUserbox(frame, args[1], nocat) |
||
else |
else |
||
userboxes = args.noboxestext or |
userboxes = args.noboxestext or |
||
"''You haven't set up any languages. Please see [[:en:Template:Babel/doc|the template's documentation]] for help.''" |
|||
end |
end |
||
body_cells:wikitext(userboxes) |
body_cells:wikitext(userboxes) |
||
-- "remove" args[1] so it isn't looked at in the loop |
-- "remove" args[1] so it isn't looked at in the loop |
||
-- table.remove(args,1) doesn't produce desired result |
-- table.remove(args,1) doesn't produce desired result |
||
args[1] = '' |
args[1] = '' |
||
-- Keep track of how many columns are in this table |
-- Keep track of how many columns are in this table |
||
local col_span = 1 |
local col_span = 1 |
||
for _, v in ipairs( |
for _, v in ipairs(args) do |
||
-- ! indicates a new cell should be created |
-- ! indicates a new cell should be created |
||
if v:find('%S') and v ~= '!' then |
if v:find('%S') and v ~= '!' then |
||
body_cells:wikitext( |
body_cells:wikitext(showUserbox(frame, v, nocat)) |
||
-- Recycling body_cells for <td> |
-- Recycling body_cells for <td> |
||
elseif v and v == '!' then |
elseif v and v == '!' then |
||
| Line 73: | Line 78: | ||
end |
end |
||
end |
end |
||
row1:tag('th') |
row1:tag('th') |
||
| ⚫ | |||
| ⚫ | |||
:css({ |
|||
| ⚫ | |||
| ⚫ | |||
| ⚫ | |||
| ⚫ | |||
| ⚫ | |||
}) |
|||
| ⚫ | |||
:done() |
|||
row3:tag('td') |
row3:tag('td') |
||
| ⚫ | |||
| ⚫ | |||
:css({ |
|||
| ⚫ | |||
| ⚫ | |||
| ⚫ | |||
| ⚫ | |||
| ⚫ | |||
}) |
|||
| ⚫ | |||
:done() |
|||
if args['special-boxes'] then |
if args['special-boxes'] then |
||
body_cells:wikitext(args['special-boxes']) |
body_cells:wikitext(args['special-boxes']) |
||
end |
end |
||
body_cells:done() |
body_cells:done() |
||
return tostring(ret) |
return tostring(ret) |
||
end |
end |
||
Latest revision as of 03:29, 11 April 2025
Documentation for this module may be created at Module:Babel/doc
local p = {}
local getArgs
local function showUserbox(frame, v, nocat)
local maybeNocat = ''
if nocat then
maybeNocat = '|nocat=yes'
end
return frame:preprocess('{{User ' .. v .. maybeNocat .. '}}')
end
function p.main(frame)
if not getArgs then
getArgs = require('Module:Arguments').getArgs
end
local args = getArgs(frame, {
wrappers = 'Template:Babel'
})
local ret = mw.html.create('table')
:attr('role', 'presentation')
:addClass('userboxes')
:css({
float = args.align or 'right',
['margin-left'] = (args.left or '1') .. 'em',
['margin-bottom'] = (args.bottom or '0') .. 'em',
width = (args.width or '248') .. 'px',
clear = args.align or 'right',
color = args.textcolor or '#000000',
border = (args.bordercolor or '#99B3FF') .. ' solid ' .. (args.solid or 1) .. 'px'
})
local nocat = args.nocat and string.lower(args.nocat) == 'yes'
if args.shadow and string.lower(args.shadow) == 'yes' then
ret:css({
['box-shadow'] = '0 2px 4px rgb(0, 0, 0, 0.2)'
})
end
ret:cssText(args['extra-css'] or '')
local color = args.color or 'inherit'
local row1 = ret:tag('tr')
local row2 = ret:tag('tr')
local row3 = ret:tag('tr')
local body_cells = row2:tag('td')
:css('vertical-align', 'middle !important')
local userboxes
-- Special message for when first argument is blank; otherwise treat it as normal
if args[1] and args[1]:find('%S') then
userboxes = showUserbox(frame, args[1], nocat)
else
userboxes = args.noboxestext or
"''You haven't set up any languages. Please see [[:en:Template:Babel/doc|the template's documentation]] for help.''"
end
body_cells:wikitext(userboxes)
-- "remove" args[1] so it isn't looked at in the loop
-- table.remove(args,1) doesn't produce desired result
args[1] = ''
-- Keep track of how many columns are in this table
local col_span = 1
for _, v in ipairs(args) do
-- ! indicates a new cell should be created
if v:find('%S') and v ~= '!' then
body_cells:wikitext(showUserbox(frame, v, nocat))
-- Recycling body_cells for <td>
elseif v and v == '!' then
col_span = col_span + 1
body_cells:done()
body_cells = row2:tag('td')
end
end
row1:tag('th')
:attr('colspan', col_span)
:css({
['background-color'] = color,
['text-align'] = 'center'
})
:wikitext(args.header or '[[:m:User language|User language]]')
:done()
row3:tag('td')
:attr('colspan', col_span)
:css({
['background-color'] = color,
['text-align'] = 'center'
})
:wikitext(args.footer or '[[:Category:Users by language|Search user languages]]')
:done()
if args['special-boxes'] then
body_cells:wikitext(args['special-boxes'])
end
body_cells:done()
return tostring(ret)
end
return p