알려진 문제
순환 참조가 발생했을 시 ?action=edit
으로 내용을 변경하기 전까지 문서 로딩이 되지 않습니다.
local p = {}
--frame.args의 원소 수를 세어서 반환하는 함수, --더 쉬운 방법이 있다면 알려주세요.
local function argumentCount(frame)
local count = 0
for i,v in frame:argumentPairs() do
count = count+1
end
return count
end
--
--만약 "{{#invoke:Category Template|category|성격|단체|분야|페미니즘}}""
--과 같이 호출되었다면 다음 작업을 수행합니다.
--호출한 문서의 (이름공간을 제외한) 이름이 "성격/단체"가 아니라면 (이것은 "분류:성격/단체"를 포함합니다.)
-- 문서에 "[[분류:성격/단체]]"를 추가합니다.
--"틀:분야/페미니즘 분류"라는 문서가 있는지를 검사합니다.
-- 존재한다면, 문서에 "틀:분야/페미니즘"을 전개하여 추가합니다.(해당 틀은 이 함수를 재귀호출합니다.)
--존재하지 않는다면, 문서에 "[[분류:분야/페미니즘]]"을 추가합니다.
function p._main(frame)
local argc = argumentCount(frame)
if argc % 2 ~= 0 then return '매개변수가 짝이 맞지 않습니다.[[분류:매개변수가 잘못된 문서]]' end
local text = ''
if (mw.title.getCurrentTitle().text ~= frame.args[1] .. '/' .. frame.args[2]) then
text = text .. '[[분류:' .. frame.args[1] .. '/' .. frame.args[2] .. ']]'
else
local lis = ""
for i=1,(argc-2)/2 do
lis = lis .. frame:callParserFunction( '#tag:li', '[[:분류:'..frame.args[(i*2)+1]..'/'..frame.args[(i*2)+2]..'|'..frame.args[(i*2)+1]..'/'..frame.args[(i*2)+2]..']]' )
end
text = text .. frame:callParserFunction{
name = '#tag:div',
args = {
class = 'fw-catlinks',
['data-mw'] = 'interface',
frame:callParserFunction{
name = '#tag:div', args = {
class = 'mw-normal-catlinks',
'[[특수:분류|분류]]:'.. frame:callParserFunction('#tag:ul', lis)
}
}
}
}
end
for i=1,(argc-2)/2 do
if mw.title.new('틀:' .. frame.args[(i*2)+1] .. '/' .. frame.args[(i*2)+2] .. ' 분류').exists then
text = text .. frame:expandTemplate{ title = frame.args[(i*2)+1] .. "/" .. frame.args[(i*2)+2] .. ' 분류'}
else
text = text .. '[[분류:' .. frame.args[(i*2)+1] .. '/' .. frame.args[(i*2)+2] .. '|'.. frame.args[(i*2)+2] ..']]'
end
end
return text
end
function p.main(frame)
return p._main(frame:getParent())
end
--"A/B"를 인자로 받으면 패싯인 A를 반환하는 함수
function p.facet(frame)
local slash = string.find(frame.args[1],'/')
if slash == nil then return frame.args[1] end
return string.sub(frame.args[1],1,slash-1)
end
--"A/B"를 인자로 받으면 멤버인 B를 반환하는 함수
function p.member(frame)
local slash = string.find(frame.args[1],'/')
if slash == nil then return frame.args[1] end
return string.sub(frame.args[1],slash+1,#frame.args[1])
end
return p