본문으로 이동

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

Kawa
잔글편집 요약 없음
잔글편집 요약 없음
 
(같은 사용자의 중간 판 5개는 보이지 않습니다)
1번째 줄: 1번째 줄:
local JSON = require('Module:JSON')
local getArgs = require('Module:Arguments').getArgs


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


function p.locale (keys, lang, ver)
---@param title string
lang = lang or 'EN'
---@param keys string
ver = p.vers[version] or p.vers.rel_steam
---@return string?
return (
local function parse(title, keys)
JSON.get('CU/Version/' .. ver .. '/' .. lang .. '.json', keys) or
title = mw.text.trim(title or '')
JSON.get('CU/Version/' .. ver .. '/EN.json', keys)
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
end


function p.flocale (f)
---@param frame table
return p.locale(
---@return string?
f.args[1] or f.args['keys'],
function p.locale(frame)
f.args[2] or f.args['lang'],
local args = getArgs(frame)
f.args[3] or f.args['ver']
 
)
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
end


return p
return p

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