Module:Babel
From Test Wiki
Documentation for this module may be created at Module:Babel/doc
local p = {}
local getArgs
function p.main(frame)
if not getArgs then
getArgs = require('Module:Arguments').getArgs
end
local args = getArgs(frame, {removeBlanks = true, wrappers = 'Template:Babel'})
local table_tag = mw.html.create('table')
:addClass('aserboxes')
local table_styling = {
{'align', 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', ''}
}
for _,v in ipairs(table_styling) do
table_tag:css(v[1],v[2]..v[3])
end
local bordercolor = args.bordercolor or '#99B3FF'
local solid = args.solid or '1'
table_tag:css('border',bordercolor..' solid '..solid..'px')
if args.shadow and string.lower(args.shadow) == 'yes' then
table_styling:css('box-shadow','0 2px 4px rgb(0,0,0,0.2)')
:css('-mox-box-shadow','0 2px 4px rgb(0,0,0,0.2)')
:css('-webkit-box-shadow','0 2px 4px rgb(0,0,0,0.2)')
end
local extracss = args.extracss or ''
table_styling:cssText(extracss)
local color = args.color or 'inherit'
local table_body = mw.html.create('tbody')
local row1 = mw.html.create('tr')
local row2 = mw.html.create('tr')
local row3 = mw.html.create('tr')
local header = args.header or '[[Wikipedia:Babel]]'
local footer = args.footer or '[[:Category:Wikipedians by language|Search user languages]]'
local th1 = mw.html.create('th')
:css('background-color',color)
:css('text-align','center')
:attr('colspan','10')
:wikitext(header)
local footer = mw.html.create('tr')
:css('background-color',color)
:css('text-align','center')
:attr('colspan','10')
:wikitext(footer)
row1:node(header)
row2:node(footer)
local body_cells = mw.html.create('td')
:css('vertical-align', 'middle !important')
local arg1 = args[1] or "''You haven't set up any languages. Please see [[Template:Babel/doc]] for help.''"
args[1] = ''
local userboxes = arg1
local unclosed_td = false
for _,v in ipairs(args) do
local boxtext
if v:find('%S') and not v == '!' then
boxtext = frame:expandTemplate{title='User '..v}
userboxes = userboxes..boxtext
elseif v == '!' then
userboxes = userboxes..'</td>\n<td>'
unclosed_td = true
end
end
if unclosed_td then
userboxes = userboxes..'</td>'
end
body_cells:wikitext(userboxes)
row2:node(body_cells)
table_body:node(row1)
:node(row2)
:node(row3)
table_tag:node(table_body)
return tostring(table_tag)
end
return p