local getArgs = require('Module:Arguments').getArgs
local p = {}
function p.main(frame)
local args = getArgs(frame)
local out = {}
for i, v in ipairs(args) do
local link = args['link' .. i] or ''
if link ~= '' or v ~= '' then
local sel_sty = args['selectedstyle' .. i]
local alt_sty = args['altstyle' .. i]
local sel_txt_sty = args['selectedtextstyle' .. i]
local alt_txt_sty = args['alttextstyle' .. i]
local min_wid = args.minwidth or '5.0'
local max_wid = args.maxwidth or '12'
local bdr_clr = args.bordercolor or 'gray'
local bdr_rad = args.borderradius or '4'
local hgt = args.height or '3.8'
local bck_clr = args.backcolor or '#DDD'
local alt_bck_clr = args.altbackcolor or 'transparent'
if frame:expandTemplate{ title = 'str startswith', args = { '{{FULLPAGENAME}}', '{{FULLPAGENAME:' .. (args.mainpage or '{{NAMESPACE:{{FULLPAGENAME}}}}:{{ROOTPAGENAME}}') .. '}}/' } } == 'yes'
and frame:expandTemplate{ title = 'str endswith', args = { '{{FULLPAGENAME}}', '/' .. (link ~= '' and link or v) } } == 'yes' then
local def_sel_sty = {
display = 'table-cell',
['min-width'] = min_wid .. 'em',
['max-width'] = max_wid .. 'em',
border = '1.5px solid ' .. bdr_clr,
['border-radius'] = bdr_rad .. 'px ' .. bdr_rad .. 'px 0 0',
padding = '0em 0.5em',
height = hgt .. 'em',
['vertical-align'] = 'middle',
['background-color'] = bck_clr,
color = 'black'
}
local def_sel_sty_list = {}
for k, s in pairs(def_sel_sty) do
table.insert(def_sel_sty_list, k .. ':' .. s)
end
table.insert(out, '<div style="' .. (sel_sty or args.selectedstyle or table.concat(def_sel_sty_list, ';')) .. '">')
table.insert(out, '<span style="' .. (sel_txt_sty or args.selectedtextstyle or '') .. '">')
table.insert(out,
args['bt' .. i .. '_s'] or args['bt' .. i]
or '[[' .. '{{FULLPAGENAME:' .. (args.mainpage or '{{NAMESPACE:{{FULLPAGENAME}}}}:{{ROOTPAGENAME}}') .. '}}/' .. (link ~= '' and link or v) .. '|' .. v .. ']]'
)
table.insert(out, '</span>')
table.insert(out, '</div>')
else
local def_alt_sty = {
display = 'table-cell',
['min-width'] = min_wid .. 'em',
['max-width'] = max_wid .. 'em',
border = '1.5px solid ' .. bdr_clr,
['border-radius'] = bdr_rad .. 'px ' .. bdr_rad .. 'px 0 0',
padding = '0em 0.5em',
height = hgt .. 'em',
['vertical-align'] = 'middle',
['background-color'] = alt_bck_clr
}
local def_alt_sty_list = {}
for k, s in pairs(def_alt_sty) do
table.insert(def_alt_sty_list, k .. ':' .. s)
end
table.insert(out, '<div style="' .. (alt_sty or args.altstyle or table.concat(def_alt_sty_list, ';')) .. '">')
table.insert(out, '<span style="' .. (alt_txt_sty or args.alttextstyle or '') .. '">')
table.insert(out,
args['bt' .. i .. '_a'] or args['bt' .. i]
or '[[' .. '{{FULLPAGENAME:' .. (args.mainpage or '{{NAMESPACE:{{FULLPAGENAME}}}}:{{ROOTPAGENAME}}') .. '}}/' .. (link ~= '' and link or v) .. '|' .. v .. ']]'
)
table.insert(out, '</span>')
table.insert(out, '</div>')
end
end
end
return frame:preprocess(table.concat(out))
end
return p