Module:inline: Difference between revisions

From Laenkea
Jump to navigation Jump to search
No edit summary
No edit summary
Line 4: Line 4:
     local args = {}
     local args = {}
     local i, key, value = 0
     local i, key, value = 0
    mw.log(type(i))
    mw.log(i)
    mw.log(type(term))
    mw.log(term)
    mw.log(#term)
     while i < #term do
     while i < #term do
     mw.log("im in the matrix")
     mw.log("im in the matrix")
         key, value, i = mw.ustring.match(term, "<([a-zA-Z]+):([^>]+)>()")
         key, value, i = mw.ustring.match(term, "<([a-zA-Z]+):([^>]+)>()")
         if key and value then args[key] = value end  
         if key and value then args[key] = value else break end  
     end
     end
     return mw.ustring.gsub(term, "<[a-zA-Z]+:[^>]+>", ""), args
     return mw.ustring.gsub(term, "<[a-zA-Z]+:[^>]+>", ""), args

Revision as of 22:25, 20 February 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 = {}
    local i, key, value = 0
    while i < #term do
    	mw.log("im in the matrix")
        key, value, i = mw.ustring.match(term, "<([a-zA-Z]+):([^>]+)>()")
        if key and value then args[key] = value else break end 
    end
    return mw.ustring.gsub(term, "<[a-zA-Z]+:[^>]+>", ""), args
end

return export