Module:Ustring: Difference between revisions
Jump to navigation
Jump to search
m Changed protection level for "Module:Ustring": High-risk Lua module: per request at WP:RFPP; used by TE protected Template:R from Unicode character ([Edit=Require template editor access] (indefinite)) |
imported>Legoktm Replace Module:No globals with require( "strict" ) |
||
(3 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
require(' | require('strict') | ||
return setmetatable({}, { | return setmetatable({}, { | ||
__index = function(t, k) | __index = function(t, k) | ||
Line 7: | Line 7: | ||
end | end | ||
return function(frame) | return function(frame) | ||
local | local fargs = frame.args | ||
local fargsused = { tag = true } | |||
args[ | local args = {} | ||
local str_i = 1 | |||
while fargs['s' .. str_i] do | |||
fargsused['s' .. str_i] = true | |||
args[str_i] = fargs['s' .. str_i] | |||
str_i = str_i + 1 | |||
end | end | ||
if not | for i, v in ipairs(fargs) do | ||
return (what(unpack(args))) | fargsused[i] = true | ||
args[i + str_i - 1] = tonumber(v) or v:gsub("^\\", "", 1) | |||
end | |||
if not fargs.tag then | |||
return (what(unpack(args))) -- Outside parens truncate to first result avoiding tail call | |||
end | end | ||
local tagargs = {} | local tagargs = {} | ||
for x, y in pairs( | for x, y in pairs(fargs) do | ||
if | if not fargsused[x] then tagargs[x] = y end | ||
end | end | ||
return frame:extensionTag{name = | return frame:extensionTag{name = fargs.tag, content = what(unpack(args)), args = tagargs} | ||
end | end | ||
end | end | ||
}) | }) |
Latest revision as of 17:00, 21 October 2022
Documentation for this module may be created at Module:Ustring/doc
Script error: Lua error: Internal error: The interpreter exited with status 127.
require('strict')
return setmetatable({}, {
__index = function(t, k)
local what = mw.ustring[k]
if type(what) ~= "function" then
return what
end
return function(frame)
local fargs = frame.args
local fargsused = { tag = true }
local args = {}
local str_i = 1
while fargs['s' .. str_i] do
fargsused['s' .. str_i] = true
args[str_i] = fargs['s' .. str_i]
str_i = str_i + 1
end
for i, v in ipairs(fargs) do
fargsused[i] = true
args[i + str_i - 1] = tonumber(v) or v:gsub("^\\", "", 1)
end
if not fargs.tag then
return (what(unpack(args))) -- Outside parens truncate to first result avoiding tail call
end
local tagargs = {}
for x, y in pairs(fargs) do
if not fargsused[x] then tagargs[x] = y end
end
return frame:extensionTag{name = fargs.tag, content = what(unpack(args)), args = tagargs}
end
end
})