Module:Test/entrée json

Définition, traduction, prononciation, anagramme et synonyme sur le dictionnaire libre Wiktionnaire.

La documentation pour ce module peut être créée à Module:Test/entrée json/Documentation

sec_lang = require("Module:section_langue")

local p = {}

function p.entree_json(frame)
    local args = frame.args
    
    local entree = args.json or '{}'
    local entree_str = p.print_entree_json(entree)
    
    local text = {}
    table.insert(text, "<h1>Code json</h1>")
    table.insert(text, frame:preprocess( "<pre>" .. entree .. "</pre>" ))
    table.insert(text, "<h1>Code wiki généré</h1>")
    table.insert(text, frame:preprocess( "<pre>" .. entree_str .. "</pre>" ))
    table.insert(text, "<h1>Rendu du code wiki</h1>")
    table.insert(text,  frame:preprocess( p.print_entree_json(entree)))
    return table.concat(text, "\n\n")
end

function p.print_lexeme(titre, langue, lem)
	local typ = lem["type"]
	
	-- Ici il faudrait appeler le module de section directement
	local sec_titre = "=== {{S|" .. typ .. "|" .. langue .. "}} ==="
	local ligne_forme = "'''" .. titre .. "'''"
	return sec_titre .. "\n" .. ligne_forme
end

function p.print_entree_json(json)
	struct = mw.text.jsonDecode(json)
	
	local langue = struct["langue"]
	local titre = struct["titre"] or mw.title.getCurrentTitle()
	local lexemes = struct["lexemes"]
	
	local text = {}
	-- NB : on peut simplement écrire {{langue|code}} à la place, mais c'est plus efficace
	-- d'appeler la fonction du module directement
	local sec_lang = "== {{langue|" ..  langue .. "}} =="
	--local sec_lang = "== " .. sec_lang.section_langue_args({ [1] = langue }) .. " =="
	table.insert(text, sec_lang)
	for k, lem in ipairs(lexemes) do
		table.insert(text, p.print_lexeme(titre, langue, lem))
	end
	return table.concat(text, "\n")
end

return p