From Wikipedia, the free encyclopedia

-- implements [[template:image array]]



local p = {}



local function isnotempty(s)

	return s and s:match( '^%s*(.-)%s*$' ) ~= ''

end



local function renderArrayCell( img, c, a, b, l, tc, t, w, h)

	local alt = isnotempty(a) and ('|alt=' .. a) or ''

	local link = isnotempty(l) and ('|link=' .. l) or ''

	local text = (isnotempty(tc) and not isnotempty(t)) 

		and mw.text.unstrip(c) or mw.text.unstrip(t or '')

	local border = isnotempty(b) and '|border' or ''

		

	local cell = mw.html.create('')

	if( img ) then

		cell:tag('div')

			:css('display', 'table-cell')

			:css('vertical-align', 'middle')

			:css('width', w .. 'px')

			:css('height', h .. 'px')

			:css('margin-left', 'auto')

			:css('margin-right', 'auto')

			:wikitext(mw.ustring.format('[[File:%s|%dx%dpx%s|%s]]', 

				img, w, h, alt .. link .. border, text))

		cell:tag('div')

			:css('padding', '1px')

			:wikitext(c)

	end

	

	return tostring(cell)

end



function p._imagearray( args )

	local width = tonumber(args'width' or 60)

	local height = tonumber(args'height' or 70)

	local perrow = tonumber(args'perrow' or 4)

	local bw = tonumber(args'border-width' or 0)

	local fs = args'font-size' or '88%'

	local text = args'text' or ''

	local margin = args'margin' or 'auto'

	local border = ( bw > 0 ) and tostring(bw) .. 'px #aaa solid'



	-- find all the nonempty image numbers

	local imagenums = {}

	local imagecount = 0

	for k, v in pairs( args ) do

		local i = tonumber(tostring(k):match( '^%s*image([%d]+)%s*$' ) or 0)

		if( i > 0 and isnotempty(v) ) then

			table.insert( imagenums, i )

			imagecount = imagecount + 1

		end

	end

	-- sort the image numbers

	table.sort(imagenums)

	

	-- compute the number of rows

	local rowcount = math.ceil(imagecount / perrow)

	

	if rowcount < 1 then

		return '[[Category:Pages using image array with no images]]'

	end



	-- start table

	root = mw.html.create('table')

	root

		:addClass(args'class'])

		:css('border-collapse','collapse')

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

		:css('font-size', fs)

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

		:css('margin',margin)

		:css('width', tostring(width*perrow) .. 'px')



	-- loop over the images

	for j = 1, rowcount do

		local row = root:tag('tr')

		row:css('vertical-align', 'top')

		for k = 1, perrow do

			i = imagenums[(j-1)*perrow + k or 0

			row:tag('td')

				:css('width', width .. 'px')

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

				:css(border and 'border' or '', border or '')

				:wikitext(renderArrayCell( 

					args'image' .. i], args'caption' .. i], args'alt' .. i], 

					args'border' .. i], args'link' .. i , 

					args'text'], args'text' .. i , width, height)

					)

		end

	end

    

	-- end table

    return tostring(root)

end

function p.array( frame )

	local args = frame:getParent().args

    return p._imagearray( args )

end

 

return p
From Wikipedia, the free encyclopedia

-- implements [[template:image array]]



local p = {}



local function isnotempty(s)

	return s and s:match( '^%s*(.-)%s*$' ) ~= ''

end



local function renderArrayCell( img, c, a, b, l, tc, t, w, h)

	local alt = isnotempty(a) and ('|alt=' .. a) or ''

	local link = isnotempty(l) and ('|link=' .. l) or ''

	local text = (isnotempty(tc) and not isnotempty(t)) 

		and mw.text.unstrip(c) or mw.text.unstrip(t or '')

	local border = isnotempty(b) and '|border' or ''

		

	local cell = mw.html.create('')

	if( img ) then

		cell:tag('div')

			:css('display', 'table-cell')

			:css('vertical-align', 'middle')

			:css('width', w .. 'px')

			:css('height', h .. 'px')

			:css('margin-left', 'auto')

			:css('margin-right', 'auto')

			:wikitext(mw.ustring.format('[[File:%s|%dx%dpx%s|%s]]', 

				img, w, h, alt .. link .. border, text))

		cell:tag('div')

			:css('padding', '1px')

			:wikitext(c)

	end

	

	return tostring(cell)

end



function p._imagearray( args )

	local width = tonumber(args'width' or 60)

	local height = tonumber(args'height' or 70)

	local perrow = tonumber(args'perrow' or 4)

	local bw = tonumber(args'border-width' or 0)

	local fs = args'font-size' or '88%'

	local text = args'text' or ''

	local margin = args'margin' or 'auto'

	local border = ( bw > 0 ) and tostring(bw) .. 'px #aaa solid'



	-- find all the nonempty image numbers

	local imagenums = {}

	local imagecount = 0

	for k, v in pairs( args ) do

		local i = tonumber(tostring(k):match( '^%s*image([%d]+)%s*$' ) or 0)

		if( i > 0 and isnotempty(v) ) then

			table.insert( imagenums, i )

			imagecount = imagecount + 1

		end

	end

	-- sort the image numbers

	table.sort(imagenums)

	

	-- compute the number of rows

	local rowcount = math.ceil(imagecount / perrow)

	

	if rowcount < 1 then

		return '[[Category:Pages using image array with no images]]'

	end



	-- start table

	root = mw.html.create('table')

	root

		:addClass(args'class'])

		:css('border-collapse','collapse')

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

		:css('font-size', fs)

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

		:css('margin',margin)

		:css('width', tostring(width*perrow) .. 'px')



	-- loop over the images

	for j = 1, rowcount do

		local row = root:tag('tr')

		row:css('vertical-align', 'top')

		for k = 1, perrow do

			i = imagenums[(j-1)*perrow + k or 0

			row:tag('td')

				:css('width', width .. 'px')

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

				:css(border and 'border' or '', border or '')

				:wikitext(renderArrayCell( 

					args'image' .. i], args'caption' .. i], args'alt' .. i], 

					args'border' .. i], args'link' .. i , 

					args'text'], args'text' .. i , width, height)

					)

		end

	end

    

	-- end table

    return tostring(root)

end

function p.array( frame )

	local args = frame:getParent().args

    return p._imagearray( args )

end

 

return p

Videos

Youtube | Vimeo | Bing

Websites

Google | Yahoo | Bing

Encyclopedia

Google | Yahoo | Bing

Facebook