Module:FloorNumber

Revision as of 09:22, 26 July 2019 by en>Joeytje50 (Make the [UK] or [US] text clickable to open the settings for floor convention. Some Americans that automatically have US convention said the UK convention was something they got used to on the wiki, so wanted to switch back, but couldn't find the setting)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Documentation for this module may be created at Module:FloorNumber/doc

local ordinal = require('Module:Ordinal')._main
local yn = require('Module:Yesno')

local p = {}

function p.main(frame)
	return p._main(frame:getParent().args)
end

function p._main(args)
	local nohelp = yn(args.nohelp) or string.lower(tostring(args[3])) == 'nohelp'
	local caps = yn(args.caps) or string.lower(tostring(args[2])) == 'caps'
	local flr = tonumber(args.uk)
	if not flr then
		flr = tonumber(args.us) or tonumber(args[1]) or 1
		flr = flr - 1
	end
	local flr_us = flr+1
	local ord_gb = ordinal(flr, {nosup=true, nonum=true})
	local ord_us = ordinal(flr_us, {nosup=true, nonum=true})
			
	
	local ret = mw.html.create('span')
	ret:addClass('floornumber')
	local spn_gb = ret:tag('span')
	spn_gb	:addClass('floornumber-gb')
	
	if flr == 0 then
		if caps then
			spn_gb:wikitext('Ground')
		else
			spn_gb:wikitext('ground')
		end
	else
		spn_gb:wikitext(flr)
				:tag('sup')
					:addClass('floornumber-ordinal-suffix')
					:wikitext(ord_gb)
				:done()
	end
	spn_gb:wikitext(' floor')
	if not nohelp then
		spn_gb:tag('sup')
			:addClass('floornumber-help')
			:wikitext('[')
			:tag('span')
				:addClass('fact-text')
				:addClass('floor-convention')
				:attr('title', 'British convention; floor '..flr_us..' in the US')
				:wikitext('UK')
			:done()
			:wikitext(']')
	end	
	
	local spn_us = ret:tag('span')
	spn_us	:addClass('floornumber-us')
			:wikitext(flr_us)
			:tag('sup')
				:addClass('floornumber-ordinal-suffix')
				:wikitext(ord_us)
			:done()
			:wikitext(' floor')
		:done()
	
	if not nohelp then
		local flr_gb
		if flr == 0 then
			flr_gb = 'ground floor'
		else
			flr_gb = 'floor '..flr
		end
		spn_us:tag('sup')
			:addClass('floornumber-help')
			:wikitext('[')
			:tag('span')
				:addClass('fact-text')
				:addClass('floor-convention')
				:attr('title', 'US convention; '..flr_gb..' in the UK')
				:wikitext('US')
			:done()
			:wikitext(']')
	end	
	return ret
end

return p