Zum Inhalt springen

Modul:JsonLoader

Aus Wikonia

Vorlage:Moduldokumentation

Modul:JsonLoader[Quelltext bearbeiten]

Dieses Hilfsmodul lädt und dekodiert JSON-Daten aus einer Seite im Modul-Namensraum.

Funktion[Quelltext bearbeiten]

JsonLoader.load(title)

  • title: Titel der Modul-Seite mit JSON-Inhalt (z. B. Modul:KategorieDaten.json)
  • Gibt zurück:
    • das dekodierte Lua-Objekt (table) **oder**
    • nil und eine Fehlermeldung

Beispiel[Quelltext bearbeiten]

local loader = require('Modul:JsonLoader')
local daten, err = loader.load('Modul:KategorieDaten.json')
if daten then
  -- Zugriff auf z. B. daten["Hilfeseiten"].description_de
else
  return err
end

Anforderungen[Quelltext bearbeiten]

  • Die JSON-Seite muss reines, gültiges JSON enthalten
  • Kein Wikitext, keine Kommentare, keine Formatierungs-Tags

-- Modul:JsonLoader
-- Lädt eine JSON-Seite aus dem Modul-Namensraum und dekodiert sie
local JsonLoader = {}

function JsonLoader.load(title)
	local content = mw.title.new(title):getContent()
	if not content then
		return nil, "⚠️ JSON page not found: " .. title
	end

	-- Extrahiere reinen JSON-Inhalt aus Lua-Wrapper
	local match = content
  :gsub('^%s*return%s*%[%=+%[', '')
  :gsub('%]%=+%]%s*$', '')
	if not match then
		return nil, "⚠️ Could not extract JSON block from: " .. title
	end

	local ok, data = pcall(mw.text.jsonDecode, match)
	if not ok or type(data) ~= "table" then
		return nil, "⚠️ Invalid or unparsable JSON in: " .. title
	end

	return data, nil
end

return JsonLoader