全站通知:
模块:Tab
刷
历
编
跳到导航
跳到搜索
此模块的文档可以在模块:Tab/doc创建
local p = {}
function p.tab(frame)
-- local args = (frame == mw.getCurrentFrame() and frame.args) or frame
if frame ~= mw.getCurrentFrame() then
-- 调试用
args = frame
frame = mw.getCurrentFrame()
else if frame:getParent() ~= nil then
args = frame:getParent().args
else
args = frame.args
end
end
--mw.log(table.concat(args,"\n"))
local index = 1
local tabIndex = 1
local tabName = {}
local tabContent = {}
local tabId = {}
local fold = false
if args["折叠"] ~= nil then
fold = true
tabName[tabIndex] = "[折叠]"
tabContent[tabIndex] = ""
tabIndex = tabIndex + 1
end
while args[index] ~= nil do
tabName[tabIndex] = frame:preprocess(args[index])
tabContent[tabIndex] = frame:preprocess(args[index+1])
tabIndex = tabIndex + 1
index = index + 2
end
local result = {}
table.insert(result, [[<div style="display:none">]])
for i = 1, index-1 do
if args[i] ~= nil then
table.insert(result, args[i]..[[<br>]])
else
table.insert(result, [[args(]]..i..[[)is nil<br>]])
end
end
table.insert(result, [[</div>]])
if tabIndex == 2 and fold or tabIndex == 1 then
return 'Error: No tab parsed.'
end
table.insert(result, [[<div class="TabContainer"><ul>]].."\n")
table.insert(result, [[<li class="tab_li active">]]..tabName[1]..[[</li>]].."\n")
for i = 2, tabIndex-1 do
table.insert(result, [[<li class="tab_li">]]..tabName[i]..[[</li>]].."\n")
end
table.insert(result, [[</ul>]].."\n")
table.insert(result, [[<div class="tab_con active">]]..tabContent[1]..[[</div>]].."\n")
for i = 2, tabIndex-1 do
table.insert(result, [[<div class="tab_con">]]..tabContent[i]..[[</div>]].."\n")
end
table.insert(result, [[</div>]].."\n")
--mw.log(table.concat(result))
return table.concat(result)
end
-- function genId()
-- -- return 'tab-' .. os.clock() * 1e9
-- local seed={'e','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'}
-- local tb={}
-- for i=1,12 do
-- table.insert(tb,seed[math.random(1,16)])
-- end
-- local sid=table.concat(tb)
-- return string.format('tab-%s-%s-%s',
-- os.clock() * 1e5,
-- string.sub(sid,1,6),
-- string.sub(sid,7,12)
-- )
-- end
return p