From Wikipedia, the free encyclopedia


require('strict')

local getArgs = require('Module:Arguments').getArgs



local p = {}

function p.infobox(frame, args)

	if not args then

		args = getArgs(frame)

	end



	local root = mw.html.create()

	local columns = args.party_column and 4 or 3

	mw.log(columns)

	

	if args.caption then

		args.caption = '<br />' .. tostring(

			mw.html.create('span')

				:cssText(args.captionstyle)

				:wikitext(args.caption)

			)

	end

	if args.topcaption then

		args.topcaption = '<br />' .. tostring(

			mw.html.create('span')

				:cssText(args.topcaptionstyle)

				:wikitext(args.topcaption)

			)

	end

	

	local floatcss = {

		left = 'margin-left:0; margin-right:1em; float:left; clear:left;',

		center = 'margin-left:auto; margin-right:auto; float:none; clear:none;',

		none = 'margin-left:0; margin-right:0; float:none; clear:none;',

		right = 'margin-left:1em; margin-right:0; float:right; clear:right;'

	}

	

	root = root

		:tag('table')

		:addClass('infobox')

		:css('width', 'auto')

		:css('text-align', 'left')

		:css('line-height', '1.2em')

		:cssText(args.float and floatcss[(args.float):lower()] or floatcss'right'])



	if args.topimage then

		root

			:tag('tr'):tag('td')

				:attr('colspan', columns)

				:css('text-align', 'center')

				:wikitext(require('Module:InfoboxImage').InfoboxImage{args = {

							image = args.topimage,

							size = args.topimagesize,

							sizedefault = 'frameless',

							upright = 1,

							alt = args.topimagealt

						}} .. (args.topcaption or '')

					)

	end

	if args.above then

		root

			:tag('tr'):tag('th')

				:attr('colspan', columns)

				:css('line-height','1.5em')

				:css('font-size','110%')

				:css('background','#DCDCDC')

				:css('text-align', 'center')

				:wikitext(args.above)

	end

	if args.image then

		root

			:tag('tr'):tag('td')

				:attr('colspan', columns)

				:css('text-align', 'center')

				:wikitext(require('Module:InfoboxImage').InfoboxImage{args = {

							image = args.image,

							size = args.imagesize,

							sizedefault = 'frameless',

							upright = 1,

							alt = args.imagealt

						}} .. (args.caption or '')

					)

	end

	local header = root:tag('tr')

	header:tag('th')

		:wikitext(args.office_label or 'Office')

	header:tag('th')

		:wikitext(args.name_label or 'Name')

	if args.party_column then 

		header:tag('th')

			:wikitext(args.party_label or 'Party')

	end

	header:tag('th')

		:wikitext(args.term_label or 'Term')

	root:tag('tr')

			:tag('td')

				:attr('colspan', columns)

				:css('background', '#000')



	local subRows = {}

	local keys = {}

	for k,v in pairs(args) do

		k = tostring(k)

		local num = k:match('^office(%d+)$') 

		if num and args'name' .. num .. 'a' then

			num = tonumber(num)

			if subRowsnum == nil then 

				subRowsnum = {} 

				table.insert(keys, num)

			end

		end



		local num,l = k:match('^name(%d+)([a-z])$')

		if num then

			num = tonumber(num)

			if subRowsnum == nil then 

				subRowsnum = {}

				table.insert(keys,num)

			end

			subRowsnum][l = l

		end

	end

	

	table.sort(keys)



	for i, num in ipairs(keys) do 

		if i > 1 then

			root:tag('tr')

				:tag('td')

					:attr('colspan',columns)

					:css('background','#D1D1D1')

		end

		local r = {}

		for j,l in pairs(subRowsnum]) do

			table.insert(r,l)

		end

		table.sort(r)

		local row = root:tag('tr')

		local ocell = row:tag('td'):wikitext(args'office' .. num])

		local subrow = 0

		for j, l in pairs(r) do

			subrow = subrow + 1

			if subrow > 1 then

				row:tag('tr')

			end

			row:tag('th')

				:css('font-weight', 'bold')

				:wikitext(args'name'..num..l])

			if args.party_column then

				row:tag('td')

					:wikitext(args'party'..num..l])

			end

			row:tag('td')

				:wikitext(args'term'..num..l])

		end

		ocell:attr('rowspan', (subrow > 1) and subrow or nil)

	end

	

	if args.below then

		root:tag('tr')

			:tag('td')

				:attr('colspan', columns)

				:css('border-top', '#D1D1D1 2px solid')

				:wikitext(args.below)

	end



	return tostring(root)

end

return p
From Wikipedia, the free encyclopedia


require('strict')

local getArgs = require('Module:Arguments').getArgs



local p = {}

function p.infobox(frame, args)

	if not args then

		args = getArgs(frame)

	end



	local root = mw.html.create()

	local columns = args.party_column and 4 or 3

	mw.log(columns)

	

	if args.caption then

		args.caption = '<br />' .. tostring(

			mw.html.create('span')

				:cssText(args.captionstyle)

				:wikitext(args.caption)

			)

	end

	if args.topcaption then

		args.topcaption = '<br />' .. tostring(

			mw.html.create('span')

				:cssText(args.topcaptionstyle)

				:wikitext(args.topcaption)

			)

	end

	

	local floatcss = {

		left = 'margin-left:0; margin-right:1em; float:left; clear:left;',

		center = 'margin-left:auto; margin-right:auto; float:none; clear:none;',

		none = 'margin-left:0; margin-right:0; float:none; clear:none;',

		right = 'margin-left:1em; margin-right:0; float:right; clear:right;'

	}

	

	root = root

		:tag('table')

		:addClass('infobox')

		:css('width', 'auto')

		:css('text-align', 'left')

		:css('line-height', '1.2em')

		:cssText(args.float and floatcss[(args.float):lower()] or floatcss'right'])



	if args.topimage then

		root

			:tag('tr'):tag('td')

				:attr('colspan', columns)

				:css('text-align', 'center')

				:wikitext(require('Module:InfoboxImage').InfoboxImage{args = {

							image = args.topimage,

							size = args.topimagesize,

							sizedefault = 'frameless',

							upright = 1,

							alt = args.topimagealt

						}} .. (args.topcaption or '')

					)

	end

	if args.above then

		root

			:tag('tr'):tag('th')

				:attr('colspan', columns)

				:css('line-height','1.5em')

				:css('font-size','110%')

				:css('background','#DCDCDC')

				:css('text-align', 'center')

				:wikitext(args.above)

	end

	if args.image then

		root

			:tag('tr'):tag('td')

				:attr('colspan', columns)

				:css('text-align', 'center')

				:wikitext(require('Module:InfoboxImage').InfoboxImage{args = {

							image = args.image,

							size = args.imagesize,

							sizedefault = 'frameless',

							upright = 1,

							alt = args.imagealt

						}} .. (args.caption or '')

					)

	end

	local header = root:tag('tr')

	header:tag('th')

		:wikitext(args.office_label or 'Office')

	header:tag('th')

		:wikitext(args.name_label or 'Name')

	if args.party_column then 

		header:tag('th')

			:wikitext(args.party_label or 'Party')

	end

	header:tag('th')

		:wikitext(args.term_label or 'Term')

	root:tag('tr')

			:tag('td')

				:attr('colspan', columns)

				:css('background', '#000')



	local subRows = {}

	local keys = {}

	for k,v in pairs(args) do

		k = tostring(k)

		local num = k:match('^office(%d+)$') 

		if num and args'name' .. num .. 'a' then

			num = tonumber(num)

			if subRowsnum == nil then 

				subRowsnum = {} 

				table.insert(keys, num)

			end

		end



		local num,l = k:match('^name(%d+)([a-z])$')

		if num then

			num = tonumber(num)

			if subRowsnum == nil then 

				subRowsnum = {}

				table.insert(keys,num)

			end

			subRowsnum][l = l

		end

	end

	

	table.sort(keys)



	for i, num in ipairs(keys) do 

		if i > 1 then

			root:tag('tr')

				:tag('td')

					:attr('colspan',columns)

					:css('background','#D1D1D1')

		end

		local r = {}

		for j,l in pairs(subRowsnum]) do

			table.insert(r,l)

		end

		table.sort(r)

		local row = root:tag('tr')

		local ocell = row:tag('td'):wikitext(args'office' .. num])

		local subrow = 0

		for j, l in pairs(r) do

			subrow = subrow + 1

			if subrow > 1 then

				row:tag('tr')

			end

			row:tag('th')

				:css('font-weight', 'bold')

				:wikitext(args'name'..num..l])

			if args.party_column then

				row:tag('td')

					:wikitext(args'party'..num..l])

			end

			row:tag('td')

				:wikitext(args'term'..num..l])

		end

		ocell:attr('rowspan', (subrow > 1) and subrow or nil)

	end

	

	if args.below then

		root:tag('tr')

			:tag('td')

				:attr('colspan', columns)

				:css('border-top', '#D1D1D1 2px solid')

				:wikitext(args.below)

	end



	return tostring(root)

end

return p

Videos

Youtube | Vimeo | Bing

Websites

Google | Yahoo | Bing

Encyclopedia

Google | Yahoo | Bing

Facebook