본문으로 이동

모듈:CU

Kawa
Kawalain (토론 | 기여)님의 2026년 5월 27일 (수) 22:00 판
(차이) ← 이전 판 | 최신판 (차이) | 다음 판 → (차이)

이 모듈에 대한 설명문서는 모듈:CU/설명문서에서 만들 수 있습니다

local getArgs = require('Module:Arguments').getArgs

local p = {
	vers = {
		latest = '6.1',
		['6.1'] = '6.1'
	}
}

---@param title string
---@param keys string
---@return string?
local function parse(title, keys)
	title = mw.text.trim(title or '')
	keys = mw.text.trim(keys or '')

	local page = mw.title.new(title)
	if not page or not page.exists then
		return nil
	end

	local value = mw.text.jsonDecode(page:getContent())
	for key in keys:gmatch("[^.]+") do
		if type(value) == "table" then
			value = value[key]
		else
			return nil
		end
	end

	return value
end

---@param frame table
---@return string?
function p.locale(frame)
	local args = getArgs(frame)

	local keys = args[1] or args.keys
	local lang = args[2] or args.lang or 'EN'
	local ver = args[3] or args.ver or p.vers.latest

	return parse('CU/data/' .. ver .. '/' .. lang .. '.json', keys) or
		parse('CU/data/' .. ver .. '/EN.json', keys)
end

return p