Jump to content

Module:Sandbox/Jackmcbarn

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by Jackmcbarn (talk | contribs) at 16:17, 7 July 2015 (add quick test thing). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

local translationwrapper = {}

function translationwrapper.create(args)
	if not args.temapping then
		args.temapping = {}
		for k,v in pairs(args.etmapping) do
			if type(v) == 'table' then
				for _,v2 in ipairs(v) do
					args.temapping[v2] = k
				end
			else
				args.temapping[v] = k
			end
		end
	end

	local mt = {}
	function mt.__index(t, k)
		local etmapping = args.etmapping[k]
		if type[etmapping] == 'table' then
			for _,v in ipairs(etmapping) do
				local retval = src[v]
				if retval ~= nil then
					return retval
				end
			end
			if args.strict then
				return nil
			else
				return src[k]
			end
		elseif etmapping ~= nil then
			local retval = src[etmapping]
			if retval ~= nil then
				return retval
			elseif args.strict then
				return nil
			else
				return src[k]
			end
		elseif args.strict then
			error('Tried to read untranslated key in strict mode: ' .. k)
		else
			return src[k]
		end
	end
	function mt.__newindex(t, k, v)
		local etmapping = args.etmapping[k]
		if type[etmapping] == 'table' then
			etmapping = etmapping[1]
		elseif etmapping == nil then
			if args.strict then
				error('Tried to write untranslated key in strict mode: ' .. k)
			else
				etmapping = k
			end
		end
		src[etmapping] = v
	end
	function mt.__pairs(t)
	end
	function mt.__ipairs(t)
		return ipairs(args.src)
	end
	return setmetatable({}, mt)
end

local p = {}

function p.main(frame)
	mw.logObject(frame.args, 'frame.args')
	mw.logObject(frame:getParent().args, 'frame:getParent().args')
end

function p.x(frame)
	mw.title.new(tonumber(frame.args[1]))
end

return p