Line 10: |
Line 10: |
| local origArgs | | local origArgs |
| local root | | local root |
| + | |
| + | local function notempty( s ) return s and s:match( '%S' ) end |
| + | |
| + | local function fixChildBoxes(sval, tt) |
| + | if notempty(sval) then |
| + | local marker = '<span class=special_infobox_marker>' |
| + | local s = sval |
| + | s = mw.ustring.gsub(s, '(<%s*[Tt][Rr])', marker .. '%1') |
| + | s = mw.ustring.gsub(s, '(</[Tt][Rr]%s*>)', '%1' .. marker) |
| + | if s:match(marker) then |
| + | s = mw.ustring.gsub(s, marker .. '%s*' .. marker, '') |
| + | s = mw.ustring.gsub(s, '([\r\n]|-[^\r\n]*[\r\n])%s*' .. marker, '%1') |
| + | s = mw.ustring.gsub(s, marker .. '%s*([\r\n]|-)', '%1') |
| + | s = mw.ustring.gsub(s, '(</[Cc][Aa][Pp][Tt][Ii][Oo][Nn]%s*>%s*)' .. marker, '%1') |
| + | s = mw.ustring.gsub(s, '(<%s*[Tt][Aa][Bb][Ll][Ee][^<>]*>%s*)' .. marker, '%1') |
| + | s = mw.ustring.gsub(s, '^(%{|[^\r\n]*[\r\n]%s*)' .. marker, '%1') |
| + | s = mw.ustring.gsub(s, '([\r\n]%{|[^\r\n]*[\r\n]%s*)' .. marker, '%1') |
| + | s = mw.ustring.gsub(s, marker .. '(%s*</[Tt][Aa][Bb][Ll][Ee]%s*>)', '%1') |
| + | s = mw.ustring.gsub(s, marker .. '(%s*\n|%})', '%1') |
| + | end |
| + | if s:match(marker) then |
| + | local subcells = mw.text.split(s, marker) |
| + | s = '' |
| + | for k = 1, #subcells do |
| + | if k == 1 then |
| + | s = s .. subcells[k] .. '</' .. tt .. '></tr>' |
| + | elseif k == #subcells then |
| + | local rowstyle = ' style="display:none"' |
| + | if notempty(subcells[k]) then rowstyle = '' end |
| + | s = s .. '<tr' .. rowstyle ..'><' .. tt .. ' colspan=2>\n' .. subcells[k] |
| + | elseif notempty(subcells[k]) then |
| + | if (k % 2) == 0 then |
| + | s = s .. subcells[k] |
| + | else |
| + | s = s .. '<tr><' .. tt .. ' colspan=2>\n' .. subcells[k] .. '</' .. tt .. '></tr>' |
| + | end |
| + | end |
| + | end |
| + | end |
| + | return s |
| + | else |
| + | return sval |
| + | end |
| + | end |
| | | |
| local function union(t1, t2) | | local function union(t1, t2) |
Line 56: |
Line 100: |
| :css('text-align', 'center') | | :css('text-align', 'center') |
| :cssText(args.headerstyle) | | :cssText(args.headerstyle) |
− | :wikitext(rowArgs.header) | + | :cssText(rowArgs.rowcellstyle) |
| + | :wikitext(fixChildBoxes(rowArgs.header, 'th')) |
| elseif rowArgs.data then | | elseif rowArgs.data then |
| local row = root:tag('tr') | | local row = root:tag('tr') |
Line 68: |
Line 113: |
| :attr('id', rowArgs.labelid) | | :attr('id', rowArgs.labelid) |
| :cssText(args.labelstyle) | | :cssText(args.labelstyle) |
| + | :cssText(rowArgs.rowcellstyle) |
| :wikitext(rowArgs.label) | | :wikitext(rowArgs.label) |
| :done() | | :done() |
Line 82: |
Line 128: |
| :addClass(rowArgs.class) | | :addClass(rowArgs.class) |
| :cssText(rowArgs.datastyle) | | :cssText(rowArgs.datastyle) |
| + | :cssText(rowArgs.rowcellstyle) |
| :newline() | | :newline() |
− | :wikitext(rowArgs.data) | + | :wikitext(fixChildBoxes(rowArgs.data, 'td')) |
| end | | end |
| end | | end |
Line 109: |
Line 156: |
| :css('font-weight', 'bold') | | :css('font-weight', 'bold') |
| :cssText(args.abovestyle) | | :cssText(args.abovestyle) |
− | :wikitext(args.above) | + | :wikitext(fixChildBoxes(args.above,'th')) |
| end | | end |
| | | |
Line 123: |
Line 170: |
| :cssText(args.belowstyle) | | :cssText(args.belowstyle) |
| :newline() | | :newline() |
− | :wikitext(args.below) | + | :wikitext(fixChildBoxes(args.below,'td')) |
| end | | end |
| | | |
Line 184: |
Line 231: |
| rowclass = args['rowclass' .. tostring(num)], | | rowclass = args['rowclass' .. tostring(num)], |
| rowstyle = args['rowstyle' .. tostring(num)], | | rowstyle = args['rowstyle' .. tostring(num)], |
| + | rowcellstyle = args['rowcellstyle' .. tostring(num)], |
| dataid = args['dataid' .. tostring(num)], | | dataid = args['dataid' .. tostring(num)], |
| labelid = args['labelid' .. tostring(num)], | | labelid = args['labelid' .. tostring(num)], |
Line 377: |
Line 425: |
| {prefix = 'rowclass'}, | | {prefix = 'rowclass'}, |
| {prefix = 'rowstyle'}, | | {prefix = 'rowstyle'}, |
| + | {prefix = 'rowcellstyle'}, |
| {prefix = 'class'}, | | {prefix = 'class'}, |
| {prefix = 'dataid'}, | | {prefix = 'dataid'}, |