Jump to content

Module:Ustring

Permanently protected module
From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by Uzume (talk | contribs) at 05:32, 25 April 2020 (Invert: dynamically import any function from mw.ustring upon demand instead of traversing and importing all functions from mw.ustring at every invocation since only one can actually be called at a time; even Module:LuaCall does this better passing just the single name to access instead of attempting to traverse and export an entire namespace like _G (which is clearly infeasible)). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

require('Module:No globals')
return setmetatable({}, {
	__index = function(t, k)
		return function(frame)
			local args = frame.args
			for _, v in ipairs(args) do
				args[_] = tonumber(v) or v:gsub("^\\", "", 1)
			end
			if args.tag then
				local tag = {name = args.tag, content = mw.ustring[k](unpack(args)), args = {}}
				for x, y in pairs(args) do
					if type(x) ~= 'number' and x ~= 'tag' then tag.args[x] = y end
				end
				return frame:extensionTag(tag)
			end
			return (mw.ustring[k](unpack(args)))
		end
	end
})