local export = {}
function export.explode(frame)
local args = frame.args
local wanted_index, i = tonumber(args[3]), 1
for item in require("Module:string utilities").gsplit(args[1], args[2], true) do
if i == wanted_index then
return item
end
i = i + 1
end
return ""
end
function export.substr(frame)
local args = frame.args
return require("Module:string utilities").sub(args[1] or "", tonumber(args[2]) or 1, tonumber(args[3]) or -1)
end
function export.find(frame)
local args = frame.args
return require("Module:string utilities").find(args[1] or "", args[2] or "", 1, true) or ""
end
function export.find_pattern(frame)
local args = frame.args
return require("Module:string utilities").find(args[1] or "", args[2] or "", 1, false) or ""
end
function export.replace(frame)
local args = frame.args
return (require("Module:string utilities").gsub(args[1] or "", args[2] or "", args[3] or ""))
end
function export.match(frame)
local args = frame.args
return (require("Module:string utilities").match(args[1] or "", args[2] or ""))
end
function export.is_valid_page_name(frame)
return require("Module:pages").is_valid_page_name(frame.args[1]) and "valid" or ""
end
local mt = {}
function mt:__index(k)
local track = require("Module:debug/track")
local parent = mw.getCurrentFrame():getParent()
track("ugly hacks/" .. k)
if parent then
track("ugly hacks/" .. k .. "/from " .. parent:getTitle())
end
return export[k]
end
return setmetatable({}, mt)