Jump to content

Module:Class

Permanently protected module
From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by Mr. Stradivarius (talk | contribs) at 07:23, 26 January 2015 (start converting Template:Class and subtemplates). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.
(diff) ← Previous revision | Latest revision (diff) | Newer revision → (diff)

-- This module implements [[Template:Class]], [[Template:Class/icon]] and
-- [[Template:Class/colour]].

local mArguments, mIcon -- modules to lazily load
local data = mw.loadData('Module:Class/data')

local p = {}

local function validateCode(code)
	if code then
		return code:match('^%s*(.-)%s*$'):lower() -- trim whitespace and put in lower case
	else
		return ''
	end
end

function p._color(code)
	code = validateCode(code)
	return data.colors[code] or data.colors._DEFAULT
end

function p.color(frame)
	mArguments = require('Module:Arguments')
	local args = mArguments.getArgs(frame, {
		wrappers = 'Template:Class/colour',
		trim = false,
		removeBlanks = false
	})
	local code = args[1]
	local color = p._color(code)
	-- We need nowiki tags as template output beginning with "#" triggers
	-- bug 14974.
	return frame:extensionTag('nowiki', color)
end

function p._icon(args)
	local code = validateCode(args.class or args[1])
	local iconData = data.icons[code]
	if iconData then
		local span = mw.html.create('span')
		span
			:cssText(args.style)
			:attr('title', iconData.title)
			:wikitext(string.format(
				'[[File:%s|%s|16px%s]]',
				iconData.image,
				iconData.tooltip,
				iconData.suppressLink and '|link=|alt=' or ''
			))
		return tostring(span)
	else
		mIcon = require('Module:Icon')
		return mIcon._main{args[1]}
	end
end

function p.icon(frame)
	mArguments = require('Module:Arguments')
	local args = mArguments.getArgs(frame, {
		wrappers = 'Template:Class/icon',
		trim = false,
		removeBlanks = false
	})
	return p._icon(args)
end

function p._class(args)
end

function p.class(frame)
	mArguments = require('Module:Arguments')
	local args = mArguments.getArgs(frame, {
		wrappers = 'Template:Class'
	})
	return p._class(args)
end

return p