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

리버티게임, 모두가 만들어가는 자유로운 게임
imported>Hsl0
(새 문서: local p = {} -- 틀을 호출한 스코프 확인 (위키용/string) function p.parent(frame) return frame:getParent():getParent():getTitle() end -- 스코프 체인에 특정 문...)
 
imported>Hsl0
편집 요약 없음
 
3번째 줄: 3번째 줄:
-- 틀을 호출한 스코프 확인 (위키용/string)
-- 틀을 호출한 스코프 확인 (위키용/string)
function p.parent(frame)
function p.parent(frame)
return frame:getParent():getParent():getTitle()
local no = frame.args[1] or ""
local parent = frame:getParent():getParent()
return parent and parent:getTitle() or no
end
end



2021년 5월 20일 (목) 20:53 기준 최신판

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

local p = {}

-- 틀을 호출한 스코프 확인 (위키용/string)
function p.parent(frame)
	local no = frame.args[1] or ""
	local parent = frame:getParent():getParent()
	
	return parent and parent:getTitle() or no
end

-- 스코프 체인에 특정 문서가 있는지 확인 (모듈용/boolean)
function p.is_scope(frame, title)
	local parent = frame
	
	while parent do
		if parent:getTitle() == title then
			return true
		end
		
		parent = parent:getParent()
	end
	
	return false
end

-- 스코프 체인에 특정 문서가 있는지 확인 (위키용/then-else)
function p.scope(frame)
	local title = frame.args[1]
	local yes = frame.args[2] or ""
	local no = frame.args[3] or ""
	
	return p.is_scope(frame, title) and yes or no
end

-- 스코프 체인 (모듈용/table)
function p.chaintable(frame)
	local chain = {}
	local parent = frame
	
	while parent do
		table.insert(chain, parent:getTitle())
		parent = parent:getParent()
	end
	
	return chain
end

-- 스코프 체인 (위키용/string 또는 JSON)
function p.chain(frame)
	local joiner = frame.args[1]
	local chain = p.chaintable(frame)
	
	if joiner
		then return table.concat(chain, joiner)
		else return mw.text.jsonEncode(chain)
	end
end

-- 인자 테이블 (위키용/JSON)
function p.args(frame)
	return mw.text.jsonEncode(frame:getParent().args)
end

-- 인자 키 테이블 (위키용/string 또는 JSON)
function p.keys(frame)
	local joiner = frame.args[1]
	local args = frame:getParent().args
	
	if joiner
		then return table.concat(args, joiner)
		else return mw.text.jsonEncode(args)
	end
end

return p