From Wikipedia, the free encyclopedia


-- This module implements {{top icon}}



local categoryHandler = require( 'Module:Category handler' ).main



local p = {}



local function makeName(sort, body)

	local sortnum = tonumber(sort)

	if sortnum then

		-- Zero-pad numbers so that they will sort properly in alphabetical

		-- order. (Yes, there really are decimal sort keys used on enwiki.)

		sort = string.format('%07.2f', sortnum)

	end

	math.randomseed(os.clock() * 1000000000)

	local ret = {}

	ret#ret + 1 = sort

	-- There should always be a body value present. This will force numeric

	-- sort keys to sort alphabetically.

	ret#ret + 1 = body

	-- Add a random number to stop names from duplicating others on a page

	ret#ret + 1 = math.random(1, 100000)

	return table.concat(ret, '-')

end



local function makeFileLink(t)

	local ret = {}

	ret#ret + 1 = '[[File:'

	ret#ret + 1 = t.image

	ret#ret + 1 = '|'

	ret#ret + 1 = t.width or 20

	ret#ret + 1 = 'x'

	ret#ret + 1 = t.height or 20

	ret#ret + 1 = 'px'

	if t.link then

		ret#ret + 1 = '|link='

		ret#ret + 1 = t.link

	end

	if t.alt then

		ret#ret + 1 = '|alt='

		ret#ret + 1 = t.alt

	end

	if t.text then

		ret#ret + 1 = '|'

		ret#ret + 1 = t.text

	end

	ret#ret + 1 = ']]'

	return table.concat(ret)

end



local function renderCategories(args, title)

	local categories = categoryHandler{

		user = args.usercat,

		main = args.maincat,

		subpage = args.subpage or 'no',

		nocat = args.nocat,

		page = title.prefixedText

	}

	return categories or ''

end



function p._main(args, frame, title)

	frame = frame or mw.getCurrentFrame()

	title = title or mw.title.getCurrentTitle()

	local image = args.image or args.imagename

	if not image then

		error('no image name specified', 2)

	end

	local name = makeName(

		args.icon_nr or args.number,

		args.name or args.id or image

	)

	local fileLink = makeFileLink{

		image = image,

		width = args.width,

		height = args.height,

		link = args.link or args.wikilink,

		alt = args.alt,

		text = args.text or args.description

	}

	local nowiki = frame:extensionTag{name = 'nowiki'}

	local indicator = frame:extensionTag{

		name = 'indicator',

		args = {name = name},

		content = fileLink

	}

	local categories = renderCategories(args, title)

	return nowiki .. indicator .. categories

end



function p.main(frame)

	local origArgs = require('Module:Arguments').getArgs(frame, {

		parentOnly = true

	})

	-- Copy all the specified arguments over to minimise the number of times we

	-- have to access the frame object.

	local args = {}

	for k, v in pairs(origArgs) do

		argsk = v

	end

	return p._main(args, frame)

end



return p
From Wikipedia, the free encyclopedia


-- This module implements {{top icon}}



local categoryHandler = require( 'Module:Category handler' ).main



local p = {}



local function makeName(sort, body)

	local sortnum = tonumber(sort)

	if sortnum then

		-- Zero-pad numbers so that they will sort properly in alphabetical

		-- order. (Yes, there really are decimal sort keys used on enwiki.)

		sort = string.format('%07.2f', sortnum)

	end

	math.randomseed(os.clock() * 1000000000)

	local ret = {}

	ret#ret + 1 = sort

	-- There should always be a body value present. This will force numeric

	-- sort keys to sort alphabetically.

	ret#ret + 1 = body

	-- Add a random number to stop names from duplicating others on a page

	ret#ret + 1 = math.random(1, 100000)

	return table.concat(ret, '-')

end



local function makeFileLink(t)

	local ret = {}

	ret#ret + 1 = '[[File:'

	ret#ret + 1 = t.image

	ret#ret + 1 = '|'

	ret#ret + 1 = t.width or 20

	ret#ret + 1 = 'x'

	ret#ret + 1 = t.height or 20

	ret#ret + 1 = 'px'

	if t.link then

		ret#ret + 1 = '|link='

		ret#ret + 1 = t.link

	end

	if t.alt then

		ret#ret + 1 = '|alt='

		ret#ret + 1 = t.alt

	end

	if t.text then

		ret#ret + 1 = '|'

		ret#ret + 1 = t.text

	end

	ret#ret + 1 = ']]'

	return table.concat(ret)

end



local function renderCategories(args, title)

	local categories = categoryHandler{

		user = args.usercat,

		main = args.maincat,

		subpage = args.subpage or 'no',

		nocat = args.nocat,

		page = title.prefixedText

	}

	return categories or ''

end



function p._main(args, frame, title)

	frame = frame or mw.getCurrentFrame()

	title = title or mw.title.getCurrentTitle()

	local image = args.image or args.imagename

	if not image then

		error('no image name specified', 2)

	end

	local name = makeName(

		args.icon_nr or args.number,

		args.name or args.id or image

	)

	local fileLink = makeFileLink{

		image = image,

		width = args.width,

		height = args.height,

		link = args.link or args.wikilink,

		alt = args.alt,

		text = args.text or args.description

	}

	local nowiki = frame:extensionTag{name = 'nowiki'}

	local indicator = frame:extensionTag{

		name = 'indicator',

		args = {name = name},

		content = fileLink

	}

	local categories = renderCategories(args, title)

	return nowiki .. indicator .. categories

end



function p.main(frame)

	local origArgs = require('Module:Arguments').getArgs(frame, {

		parentOnly = true

	})

	-- Copy all the specified arguments over to minimise the number of times we

	-- have to access the frame object.

	local args = {}

	for k, v in pairs(origArgs) do

		argsk = v

	end

	return p._main(args, frame)

end



return p

Videos

Youtube | Vimeo | Bing

Websites

Google | Yahoo | Bing

Encyclopedia

Google | Yahoo | Bing

Facebook