모듈: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) | ||
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