Modul:Arguments

Version vom 17. September 2024, 20:51 Uhr von Niko Roether (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „local M = {} function set_deep(deep_key, obj, value) local key_end = mw.ustring.find(deep_key, ".", 0, true) if key_end == nil then obj[deep_key] = value return end local head = mw.ustring.sub(deep_key, 1, key_end - 1) local tail = mw.ustring.sub(deep_key, key_end + 1) if obj[head] == nil then obj[head] = {} end if type(obj[head]) ~= "table" then return end set_deep(tail, obj[head], value) end function M.parse_deep(args) local deep_args =…“)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)

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

local M = {}

function set_deep(deep_key, obj, value)
	local key_end = mw.ustring.find(deep_key, ".", 0, true)
	if key_end == nil then
		obj[deep_key] = value
		return
	end
	
	local head = mw.ustring.sub(deep_key, 1, key_end - 1)
	local tail = mw.ustring.sub(deep_key, key_end + 1)
	if obj[head] == nil then obj[head] = {} end
	if type(obj[head]) ~= "table" then return end
	set_deep(tail, obj[head], value)
end

function M.parse_deep(args)
	local deep_args = {}
	for deep_key, value in pairs(args) do
		set_deep(deep_key, deep_args, value)
	end
	return deep_args
end

return M