Die Dokumentation für dieses Modul kann unter Modul:Properties/Doku erstellt werden

local M = {}

local function build_property_row(name, value)
	local row = mw.html.create("div")
	row:addClass("properties__row")
	
	local dt = mw.html.create("dt")
	dt:addClass("properties__name")
	dt:wikitext(name)
	row:node(dt)
	
	local dd = mw.html.create("dd")
	dd:addClass("properties__value")
	dd:wikitext(value)
	row:node(dd)
	
	return row
end

local function parse_property_definition(def)
	local segments = mw.text.split(def, "::")
	return {
		name = segments[1] or "",
		value = segments[2] or ""
	}
end

local function build(args)
	local dl = mw.html.create("dl")
	dl:addClass("properties")
	
	for _, arg in ipairs(args) do
		local def = parse_property_definition(arg)
		dl:node(build_property_row(def.name, def.value))
	end
	
	return dl
end

function M.render(frame)
	local parentFrame = frame:getParent() or {}
	local args = parentFrame.args or {}
	return tostring(build(args))
end

return M