local p = {}

for k, v in pairs(mw.ustring) do
	p[k] = 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

return p