Перейти к содержанию

Модуль:JSON

Материал из LemonCraft Wiki
Версия от 10:58, 26 марта 2025; Spark108 (обсуждение | вклад) (1 версия импортирована)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)

Для документации этого модуля может быть создана страница Модуль:JSON/doc

-- Модуль для работы с JSON-данными
local p = {}

-- Извлечение данных из JSON-страницы
function p.get(f)
	local args = f
	if f == mw.getCurrentFrame() then
		args = require([[Модуль:ProcessArgs]]).merge(true)
	end
	
	local page = args["страница"] or ''
	assert(page ~= '', "Необходима JSON-страница")
	
	local data = mw.loadJsonData(page)
	local curObject = data
	for _, key in ipairs(args) do
		curObject = curObject[key]
	end
	
	-- Если curObject является объектом (таблицей), то преобразуем её обратно
	-- в JSON-формат
	if type(curObject) == "table" then
		return mw.text.jsonEncode(curObject)
	else
		return curObject
	end
end

-- Преобразует полученные параметры в JSON-таблицу
function p.encode(f)
	return mw.text.jsonEncode(f:getParent().args)
end

return p