Module:Infobox : Kalainan tali sa mga rebisyon

Content deleted Content added
imported from en:Module:Infobox
 
No edit summary
Linya 4:
local p = {}
 
local HtmlBuildernavbar = require('Module:HtmlBuilderNavbar')._navbar
 
local args = {}
local origArgs
local root
 
local function union(t1, t2)
-- Returns the union of the values of two tables, as a sequence.
local vals = {}
Linya 26:
return ret
end
 
local function getArgNums(prefix)
-- Returns a table containing the numbers of the arguments that exist
Linya 39:
return nums
end
 
local function addRow(rowArgs)
-- Adds a row to the infobox, with either a header cell
Linya 45:
if rowArgs.header then
root
.:tag('tr')
.:addClass(rowArgs.rowclass)
.tag:cssText('th'rowArgs.rowstyle)
.:attr('colspanid', 2rowArgs.rowid)
.addClass:tag(rowArgs.class'th')
.css:attr('text-aligncolspan', 'center'2)
.cssText:attr(args'id', rowArgs.headerstyleheaderid)
.wikitext:addClass(rowArgs.headerclass)
.cssText:addClass(args.captionstyleheaderclass)
. :css('bordertext-spacingalign', '3pxcenter')
.wikitext:cssText(captionargs.headerstyle)
:wikitext(rowArgs.header)
elseif rowArgs.data then
local row = root.:tag('tr')
row.:addClass(rowArgs.rowclass)
row:cssText(rowArgs.rowstyle)
row:attr('id', rowArgs.rowid)
if rowArgs.label then
row
.:tag('th')
.:attr('scope', 'row')
.css:attr('text-alignid', 'left'rowArgs.labelid)
.:cssText(args.labelstyle)
.:wikitext(rowArgs.label)
.:done()
end
local dataCell = row.:tag('td')
if not rowArgs.label then
dataCell
.:attr('colspan', 2)
.:css('text-align', 'center')
end
dataCell
.addClass:attr('id', rowArgs.classdataid)
.cssText:addClass(rowArgs.datastyleclass)
.newline:cssText(rowArgs.datastyle)
.wikitext:newline(rowArgs.data)
:wikitext(rowArgs.data)
end
end
 
local function renderTitle()
if not args.title then return end
 
root
.:tag('caption')
.:addClass(args.titleclass)
.:cssText(args.titlestyle)
.:wikitext(args.title)
end
 
local function renderAboveRow()
if not args.above then return end
root
.:tag('tr')
.:tag('th')
.:attr('colspan', 2)
.:addClass(args.aboveclass)
.:css('text-align', 'center')
.:css('font-size', '125%')
.:css('font-weight', 'bold')
.:cssText(args.abovestyle)
.:wikitext(args.above)
end
 
local function renderBelowRow()
if not args.below then return end
root
.:tag('tr')
.:tag('td')
.:attr('colspan', '2')
.:addClass(args.belowclass)
.:css('text-align', 'center')
.:cssText(args.belowstyle)
.:newline()
.:wikitext(args.below)
end
 
local function renderSubheaders()
if args.subheader then
Line 136 ⟶ 143:
end
end
 
local function renderImages()
if args.image then
Line 147 ⟶ 154:
for k, num in ipairs(imagenums) do
local caption = args['caption' .. tostring(num)]
local data = HtmlBuildermw.html.create().:wikitext(args['image' .. tostring(num)])
if caption then
data
.:tag('brdiv', {selfClosing = true})
.done:cssText(args.captionstyle)
.tag :wikitext('div'caption)
.cssText(args.captionstyle)
.wikitext(caption)
end
addRow({
Line 164 ⟶ 169:
end
end
 
local function renderRows()
-- Gets the union of the header and data argument numbers,
Line 177 ⟶ 182:
datastyle = args.datastyle,
class = args['class' .. tostring(num)],
rowclass = args['rowclass' .. tostring(num)],
rowstyle = args['rowstyle' .. tostring(num)],
dataid = args['dataid' .. tostring(num)],
labelid = args['labelid' .. tostring(num)],
headerid = args['headerid' .. tostring(num)],
rowid = args['rowid' .. tostring(num)]
})
end
end
 
local function renderNavBar()
if not args.name then return end
root
.:tag('tr')
.:tag('td')
.:attr('colspan', '2')
.:css('text-align', 'right')
.:wikitext(mw.getCurrentFrame():expandTemplate(navbar{
title = 'navbar'args.name,
args = { args.name, mini = 1 },
}))
end
 
local function renderItalicTitle()
local italicTitle = args['italic title'] and mw.ustring.lower(args['italic title'])
if italicTitle == '' or italicTitle == 'force' or italicTitle == 'yes' then
root.:wikitext(mw.getCurrentFrame():expandTemplate({title = 'italic title'}))
end
end
 
local function renderTrackingCategories()
if args.decat ~= 'yes' then
if #(getArgNums('data')) == 0 and mw.title.getCurrentTitle().namespace == 0 then
root.:wikitext('[[Category:Articles which use infobox templates with no data rows]]')
end
if args.child == 'yes' and args.title then
root.:wikitext('[[Category:ArticlesPages which use embedded infobox templates with the title parameter]]')
end
end
end
 
local function _infobox()
-- Specify the overall layout of the infobox, with special settings
-- if the infobox is used as a 'child' inside another infobox.
if args.child ~= 'yes' then
root = HtmlBuildermw.html.create('table')
root
.:addClass('infobox')
.:addClass(args.bodyclass)
.attr('cellspacing', 3)
.css('border-spacing', '3px')
if args.subbox == 'yes' then
root
.:css('padding', '0')
.:css('border', 'none')
.:css('margin', '-3px')
.:css('width', 'auto')
.:css('min-width', '100%')
.:css('font-size', '100%')
.:css('clear', 'none')
.:css('float', 'none')
.:css('background-color', 'transparent')
else
root
.:css('width', '22em')
end
root
.:cssText(args.bodystyle)
renderTitle()
renderAboveRow()
else
root = HtmlBuildermw.html.create()
root
.:wikitext(args.title)
end
 
renderSubheaders()
renderImages()
Line 260 ⟶ 268:
renderItalicTitle()
renderTrackingCategories()
return tostring(root)
end
 
local function preprocessSingleArg(argName)
-- If the argument exists and isn't blank, add it to the argument table.
Line 271 ⟶ 279:
end
end
 
local function preprocessArgs(prefixTable, step)
-- Assign the parameters with the given prefixes to the args table, in order, in batches
Line 285 ⟶ 293:
error("Invalid step value detected", 2)
end
-- Get arguments without a number suffix, and check for bad input.
for i,v in ipairs(prefixTable) do
Line 302 ⟶ 310:
end
end
 
-- Get arguments with number suffixes.
local a = 1 -- Counter variable.
Line 338 ⟶ 346:
origArgs = frame
end
-- Parse the data parameters in the same order that the old {{infobox}} did, so that
-- references etc. will display in the expected places. Parameters that depend on
Line 368 ⟶ 376:
{prefix = 'data', depend = {'label'}},
{prefix = 'rowclass'},
{prefix = 'classrowstyle'},
{prefix = 'class'},
{prefix = 'dataid'},
{prefix = 'labelid'},
{prefix = 'headerid'},
{prefix = 'rowid'}
}, 50)
preprocessSingleArg('headerclass')
preprocessSingleArg('headerstyle')
preprocessSingleArg('labelstyle')