Module:Iconbar

From Goety Wiki
Jump to navigation Jump to search
This is the documentation page. It will be transcluded into the main module page. See Template:Documentation for more information

This module implements {{iconbar}}. It should generally be invoked directly on template pages, rather than using the iconbar template.

Parent arguments are automatically merged with directly passed arguments (the latter overwriting the former).

Dependencies

See also

Template:Iconbar see also




local p = {}
function p.bar( f )
	local args = require( 'Module:ProcessArgs' ).merge()
	local alt = args.alt or ''
	local link = args.link or ''
	local full = args.full
	local half = args.half or 'Half ' .. full
	local empty = args.empty or 'Empty ' .. full
	local value = math.abs( tonumber( args.value ) or 0 ) / 2
	local min = math.ceil( math.abs( tonumber( args.min ) or 0 ) / 2 )
	local size = args.size or ''
	local title = args.title or ''
	local reverse = args.reverse or ''
	
	if title:lower() == 'none' then
		title = ''
	elseif title ~= '' then
		title = ' title="' .. title .. '"'
	else
		title = ' title="' .. value .. '"'
	end
	
	local fullIcon = ''
	local halfIcon = ''
	local emptyIcon = ''
	
	if tonumber( size ) then
		size = '|' .. size .. 'px'
	elseif size ~= '' then
		size = '|' .. size
	end
	
	if value == 0 then
		emptyIcon = '[[File:' .. empty .. size .. '|link=' .. link .. '|alt=' .. alt .. ']]'
	else
		fullIcon = string.rep( '[[File:' .. full .. size .. '|link=' .. link .. '|alt=' .. alt .. ']]', math.floor( value ) )
		
		if math.floor( value ) ~= value then
			halfIcon = '[[File:' .. half .. size .. '|link=' .. link .. '|alt=' .. alt .. ']]'
		end
	end
	
	if min - value >= 1 then
		emptyIcon = string.rep( '[[File:' .. empty .. size .. '|link=' .. link .. '|alt=' .. alt .. ']]', min - math.ceil( value ) )
	end
	
	if reverse ~= '' then
		return '<span class="pixel-image nowrap"' .. title .. '>' .. emptyIcon .. halfIcon .. fullIcon .. '</span>'
	else
		return '<span class="pixel-image nowrap"' .. title .. '>' .. fullIcon .. halfIcon .. emptyIcon .. '</span>'
	end
end
return p