Module:Coordinates

From 2b2t Wiki
Jump to navigation Jump to search

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

require('Module:No globals')

local math_mod = require("Module:Math")
local coordinates = {};

local current_page = mw.title.getCurrentTitle()
local page_name = mw.uri.encode( current_page.prefixedText, 'WIKI' );
local templatestyles = 'Module:Coordinates/styles.css'

local function displaytitle(s)
	local l = "Coordinates: " .. s
	local co = '<span id="coordinates">' .. l .. '</span>';
	return '<span style="font-size: small;">' .. co .. '</span>';
end

local function makeInvokeFunc(funcName)
	return function (frame)
		local args = require('Module:Arguments').getArgs(frame, {
			wrappers = 'Template:Coord'
		})
		return coordinates[funcName](args, frame)
	end
end

local function formatFor2b2t(coordStr)
	local floored = math.floor(tonumber(coordStr))
	return tostring(floored):reverse():gsub("(%d%d%d)", "%1,"):reverse():gsub("^,", "")
end

coordinates.coord = makeInvokeFunc('_coord')
function coordinates._coord(args)

	local contents = mw.getCurrentFrame():extensionTag{ name = 'templatestyles', args = { src = templatestyles} }

	contents = contents .. 'X: ' .. formatFor2b2t(args[1])
	contents = contents .. ', '
	contents = contents .. 'Z: ' .. formatFor2b2t(args[2])
	local Display = args.intitle and args.intitle:lower() or 'yes'

	local function isInTitle(s)
		return s:find('yes') ~= nil
	end

	local text = contents
	if isInTitle(Display) then
		text = text
			.. displaytitle(contents)
	end

	return text
end

return coordinates