Jump to content

Module:Infobox: Difference between revisions

m fixes for child infoboxes so HTML Tidy is not required
Undid revision 782833995 by Jc86035 (talk) looks like this caused some serious problems, will require more testing (see, e.g, my talk page)
Line 10: Line 10:
local origArgs
local origArgs
local root
local root
local orphancat = 'Category:Orphan infoboxes'
local function notempty( s ) return s and s:match( '%S' ) end


local function union(t1, t2)
local function union(t1, t2)
Line 47: Line 43:
     -- Adds a row to the infobox, with either a header cell
     -- Adds a row to the infobox, with either a header cell
     -- or a label/data cell combination.
     -- or a label/data cell combination.
local s = {}
local ttype = 'td'
if rowArgs.header then
rowArgs.data = nil
s = mw.text.split(rowArgs.header, '%[%[' .. orphancat .. '%]%]')
if notempty(s[1]) then
rowArgs.header = s[1]
else
rowArgs.header = nil
end
ttype = 'th'
elseif rowArgs.data then
s = mw.text.split(rowArgs.data, '%[%[' .. orphancat .. '%]%]')
if notempty(s[1]) then
rowArgs.data = s[1]
else
rowArgs.data = nil
end
ttype = 'td'
end
   
     if rowArgs.header then
     if rowArgs.header then
    root
        root
             :tag('tr')
             :tag('tr')
                 :addClass(rowArgs.rowclass)
                 :addClass(rowArgs.rowclass)
Line 98: Line 73:
                     :done()
                     :done()
         end
         end
         local s = mw.text.split(rowArgs.data, '%[%[' .. orphancat .. '%]%]')
          
rowArgs.data = s[1]
         local dataCell = row:tag('td')
         local dataCell = row:tag('td')
         if not rowArgs.label then  
         if not rowArgs.label then  
Line 114: Line 88:
             :wikitext(rowArgs.data)
             :wikitext(rowArgs.data)
     end
     end
   
    for i = 2, #s do
if notempty(s[i]) then
if (i % 2) == 0 then
root
:wikitext(s[i])
else
local dataCell = root:tag('tr'):tag(ttype)
dataCell
:attr('colspan', 2)
:wikitext(s[i])
end
end
end
end
end


Line 142: Line 102:
local function renderAboveRow()
local function renderAboveRow()
     if not args.above then return end
     if not args.above then return end
   
     root
     root
         :tag('tr')
         :tag('tr')
Line 270: Line 231:
     -- Specify the overall layout of the infobox, with special settings
     -- Specify the overall layout of the infobox, with special settings
     -- if the infobox is used as a 'child' inside another infobox.
     -- if the infobox is used as a 'child' inside another infobox.
    local marker = ''
     if args.child ~= 'yes' then
     if args.child ~= 'yes' then
         root = mw.html.create('table')
         root = mw.html.create('table')
Line 300: Line 260:
     else
     else
         root = mw.html.create()
         root = mw.html.create()
         marker = '[[' .. orphancat .. ']]'
          
         root
         root
             :wikitext(args.title)
             :wikitext(args.title)
Line 313: Line 273:
     renderTrackingCategories()
     renderTrackingCategories()
      
      
     return marker .. tostring(root) .. marker
     return tostring(root)
end
end