모듈:연습장

리버티게임(개발), 모두가 만들어가는 자유로운 게임
imported>Hsl0님의 2022년 6월 13일 (월) 05:58 판
둘러보기로 이동 검색으로 이동


모듈 설명문서[보기] [편집] [역사] [새로 고침]

자유롭게 모듈의 사용법을 익힐 수 있는 연습장입니다.

  1. 장기간에 걸쳐 수정이 필요한 경우 별도로 모듈페이지를 만드는 것을 추천합니다.
  2. 다음 문서가 도움이 될 수 있습니다.
  3. 다른 이름공간에 대한 연습은 아래에서 가능합니다.
  4. 낙서장을 비우려면 여기를 클릭하세요.


local p = {}

local t = os.time()
local c = os.clock()

function p.getarr(frame)
	local values = {}
	local index = 0
	local keys = frame:callParserFunction('#urlget', frame.args[1] .. '[]', '#null')
	local last
	
	if keys == frame:callParserFunction('#urlget', frame.args[1] .. '[]', '#nil') then
		keys = mw.uri.decode(keys)
		
		local pass, json = pcall(mw.text.jsonDecode, keys)
		
		if pass then
			for key in pairs(json) do
				values[key] = mw.uri.decode(frame:callParserFunction('#urlget', frame.args[1] .. '[' .. key .. ']'))
			end
		end
	end
	
	while true do
		last = frame:callParserFunction('#urlget', frame.args[1] .. '[' .. index .. ']', '#null')
		
		if last == frame:callParserFunction('#urlget', frame.args[1] .. '[' .. index .. ']', '#nil') then
			last = mw.uri.decode(last)
			values[index] = last
		elseif index > 0 then
			break
		end
		
		index = index + 1
	end
	
	return mw.text.jsonEncode(values)
end

function p.stack(frame)
	local stack = {}
	local cur = frame
	
	repeat
		table.insert(stack, cur:getTitle())
		cur = cur:getParent()
	until not cur
	
	return mw.text.jsonEncode(stack)
end

function p.time(frame)
	return '[' .. t .. ', ' .. c .. ', ' .. os.time() .. ', ' .. os.clock() .. ']'
end

return p