본문으로 이동

모듈:CU: 두 판 사이의 차이

Kawa
잔글편집 요약 없음
잔글편집 요약 없음
 
37번째 줄: 37번째 줄:
local args = getArgs(frame)
local args = getArgs(frame)


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


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

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