Jump to content

Module:Ustring: Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
maintain error messages
Can you not reinvent the wheel?
Line 1: Line 1:
require('Module:No globals')
require('Module:No globals')
return setmetatable({}, {
return setmetatable({}, {
__index = function(t, f)
__index = function(t, k)
local what = mw.ustring[k]
if type(what) ~= "function" then
return what
end
return function(frame)
return function(frame)
if nil == mw.ustring[f] then
return '<strong class="error">'..mw.message.new('scribunto-common-nosuchfunction', '', f):plain()..'</strong>'
end
if 'function' ~= type(mw.ustring[f]) then
return '<strong class="error">'..mw.message.new('scribunto-common-notafunction', '', f):plain()..'</strong>'
end
local args = frame.args
local args = frame.args
for i, v in ipairs(args) do
for _, v in ipairs(args) do
args[i] = tonumber(v) or v:gsub("^\\", "", 1)
args[_] = tonumber(v) or v:gsub("^\\", "", 1)
end
end
if args.tag then
if args.tag then
local tag = {name = args.tag, content = mw.ustring[k](unpack(args)), args = {}}
local tagargs = {}
for k, v in pairs(args) do
for x, y in pairs(args) do
if 'number' ~= type(k) and 'tag' ~= k then tagargs[k] = v end
if type(x) ~= 'number' and x ~= 'tag' then tag.args[x] = y end
end
end
return frame:extensionTag{name = args.tag, content = mw.ustring[f](unpack(args)), args = tagargs}
return frame:extensionTag(tag)
end
end
return (mw.ustring[f](unpack(args)))
return (mw.ustring[k](unpack(args)))
end
end
end
end

Revision as of 23:35, 30 April 2020

require('Module:No globals')
return setmetatable({}, {
	__index = function(t, k)
		local what = mw.ustring[k]
		if type(what) ~= "function" then
			return what
		end
		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
})