Module:inline: Difference between revisions

From Laenkea
Jump to navigation Jump to search
No edit summary
No edit summary
 
Line 6: Line 6:
     local s = mw.text.split(inline, ":", true)
     local s = mw.text.split(inline, ":", true)
     args[s[1]] = s[2] or 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, "<[^>]+>", ""), args
     return mw.ustring.gsub(term, "<[^>]+>", ""), args

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