438
edits
(add colwidth per request) |
m (59 revisions imported from wikipedia:Module:Aligned_table: see Topic:Vtixlm0q28eo6jtf) |
||
(28 intermediate revisions by 7 users not shown) | |||
Line 16: | Line 16: | ||
local root = mw.html.create('table') | local root = mw.html.create('table') | ||
-- add table style for fullwidth | -- add table style for fullwidth | ||
if isnotempty(args['fullwidth']) then | if isnotempty(args['fullwidth']) then | ||
root | root | ||
:css('width', '100%') | :css('width', '100%') | ||
:css('border-collapse', 'collapse') | :css('border-collapse', 'collapse') | ||
:css('border-spacing', '0px') | :css('border-spacing', '0px 0px') | ||
:css('border', 'none') | :css('border', 'none') | ||
end | end | ||
Line 39: | Line 39: | ||
colstyle[1] = 'text-align:left;' | colstyle[1] = 'text-align:left;' | ||
colstyle[2] = 'text-align:right;' | colstyle[2] = 'text-align:right;' | ||
end | |||
if isnotempty(args['rightleft']) then | |||
colstyle[1] = 'text-align:right;' | |||
colstyle[2] = 'text-align:left;' | |||
end | end | ||
for i = 1,cols do | for i = 1,cols do | ||
colclass[ i ] = colclass[ i ] or '' | colclass[ i ] = colclass[ i ] or '' | ||
colstyle[ i ] = colstyle[ i ] or '' | colstyle[ i ] = colstyle[ i ] or '' | ||
if isnotempty(args['colstyle']) then | |||
colstyle[ i ] = args['colstyle'] .. ';' .. colstyle[ i ] | |||
end | |||
if isnotempty(args['colalign' .. tostring(i)]) then | if isnotempty(args['colalign' .. tostring(i)]) then | ||
colstyle[ i ] = 'text-align:' .. args['colalign' .. tostring(i)] .. ';' .. colstyle[ i ] | colstyle[ i ] = 'text-align:' .. args['colalign' .. tostring(i)] .. ';' .. colstyle[ i ] | ||
Line 88: | Line 95: | ||
-- compute the number of rows | -- compute the number of rows | ||
local rows = math.ceil(cellcount / cols) | local rows = math.ceil(cellcount / cols) | ||
-- build the table content | -- build the table content | ||
if isnotempty(args['title']) then | |||
local caption = root:tag('caption') | |||
caption:cssText(args['titlestyle']) | |||
caption:wikitext(args['title']) | |||
end | |||
if isnotempty(args['above']) then | |||
local row = root:tag('tr') | |||
local cell = row:tag('th') | |||
cell:attr('colspan', cols) | |||
cell:cssText(args['abovestyle']) | |||
cell:wikitext(args['above']) | |||
end | |||
for j=1,rows do | for j=1,rows do | ||
-- start a new row | -- start a new row | ||
local row = root:tag('tr') | local row = root:tag('tr') | ||
row:css('vertical-align', 'top') | if isnotempty(args['rowstyle']) then | ||
-- loop over the cells in | row:cssText(args['rowstyle']) | ||
else | |||
row:css('vertical-align', 'top') | |||
end | |||
if isnotempty(args['rowclass']) then | |||
row:addClass(args['rowclass']) | |||
end | |||
-- loop over the cells in the row | |||
for i=1,cols do | for i=1,cols do | ||
local cell = row:tag('td') | local cell | ||
if isnotempty(args['row' .. tostring(j) .. 'header']) then | |||
cell = row:tag('th'):attr('scope','col') | |||
elseif isnotempty(args['col' .. tostring(i) .. 'header']) then | |||
cell = row:tag('th'):attr('scope','row') | |||
else | |||
cell = row:tag('td') | |||
end | |||
if args['class' .. tostring(j) .. '.' .. tostring(i)] then | if args['class' .. tostring(j) .. '.' .. tostring(i)] then | ||
cell:addClass(args['class' .. tostring(j) .. '.' .. tostring(i)]) | cell:addClass(args['class' .. tostring(j) .. '.' .. tostring(i)]) | ||
else | |||
if args['rowclass' .. tostring(j)] then | |||
cell:addClass(args['rowclass' .. tostring(j)]) | |||
elseif args['row' .. tostring(j) .. 'class'] then | |||
cell:addClass(args['row' .. tostring(j) .. 'class']) | |||
elseif args['rowevenclass'] and math.fmod(j,2) == 0 then | |||
cell:addClass(args['rowevenclass']) | |||
elseif args['rowoddclass'] and math.fmod(j,2) == 1 then | |||
cell:addClass(args['rowoddclass']) | |||
end | |||
if colclass[i] ~= '' then | |||
cell:addClass(colclass[i]) | |||
end | |||
end | end | ||
if args['style' .. tostring(j) .. '.' .. tostring(i)] then | if args['style' .. tostring(j) .. '.' .. tostring(i)] then | ||
cell:cssText(args['style' .. tostring(j) .. '.' .. tostring(i)]) | cell:cssText(args['style' .. tostring(j) .. '.' .. tostring(i)]) | ||
else | |||
if args['rowstyle' .. tostring(j)] then | |||
cell:cssText(args['rowstyle' .. tostring(j)]) | |||
elseif args['rowevenstyle'] and math.fmod(j,2) == 0 then | |||
cell:cssText(args['rowevenstyle']) | |||
elseif args['rowoddstyle'] and math.fmod(j,2) == 1 then | |||
cell:cssText(args['rowoddstyle']) | |||
elseif args['row' .. tostring(j) .. 'style'] then | |||
cell:cssText(args['row' .. tostring(j) .. 'style']) | |||
end | |||
if isnotempty(colstyle[i]) then | |||
cell:cssText(colstyle[i]) | |||
end | |||
end | end | ||
cell:wikitext(args[cols*(j - 1) + i] or '') | cell:wikitext(mw.ustring.gsub(args[cols*(j - 1) + i] or '', '^(.-)%s*$', '%1') or '') | ||
end | |||
end | |||
-- return the root table | -- return the root table | ||
return tostring(root) | |||
end | |||
return p | return p |