Module:inline: Difference between revisions
Jump to navigation
Jump to search
(Created page with "local export = {} function export.parse(term, template) local args = {} local i, key, value = i while i < #term do key, value, i = mw.ustring.match(term, "<([a-zA-Z]+):([^>]+)>()") if key and value then args[key] = value end end return mw.ustring.gsub(term, "<[a-zA-Z]+:[^>]+>", ""), args end return export") |
No edit summary |
||
(9 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
local export = {} | local export = {} | ||
function export.parse(term | function export.parse(term) | ||
local args = {} | local args = {} | ||
for inline in mw.ustring.gmatch(term, "<([^>]+)>") do | |||
local s = mw.text.split(inline, ":", true) | |||
args[s[1]] = s[2] or true | |||
if #s > 2 then mw.addWarning("multiple : found in inline string") end | |||
end | end | ||
return mw.ustring.gsub(term, "< | return mw.ustring.gsub(term, "<[^>]+>", ""), args | ||
end | end | ||
return export | return export |
Latest revision as of 14:10, 31 May 2024
local m_inline = require("Module:inline") local term, args = m_inline.parse("hello<key1:value1><key2>")
Yields:
term = "hello" args = {["key1"] = "value1", ["key2"] = true}
local export = {}
function export.parse(term)
local args = {}
for inline in mw.ustring.gmatch(term, "<([^>]+)>") do
local s = mw.text.split(inline, ":", true)
args[s[1]] = s[2] or true
if #s > 2 then mw.addWarning("multiple : found in inline string") end
end
return mw.ustring.gsub(term, "<[^>]+>", ""), args
end
return export