查看“模块:Test2”的源代码
←
模块:Test2
跳到导航
跳到搜索
因为以下原因,您没有权限编辑本页:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
local p = {} local notCSS = { splitCount = true, initialTab = true, textDisplay = true, } local ordering = { tabIndices = {}, stgt = {}, stab = {}, sitm = {}, ctab = {}, citm = {}, } local CSSvalue = { stgt = {}, stab = {}, sitm = {}, ctab = {}, citm = {}, } local initialTab = nil local function replaceArgsName(str) str = str:gsub('^select', 'stab') str = str:gsub('^text', 'ctab') str = str:gsub('^sitem', 'sitm') str = str:gsub('^citem', 'citm') return str:gsub("^%u", string.lower) end local function fillWithDefaultCSS(contents, horizontal) local defaults = { stgt = {class = '',}, stab = {class = '',}, sitm = {class = '',}, ctab = {class = '',}, citm = {class = '',}, } if horizontal then contents['splitCount'] = contents['splitCount'] or '1' end contents['splitCount'] = contents['splitCount'] or '5' local elements = {'stgt', 'stab', 'sitm', 'ctab', 'citm'} for _, elem in ipairs(elements) do local resizeFlowDir = {height='y', width='x'} for size, dir in pairs(resizeFlowDir) do if CSSvalue[elem][size] then defaults[elem]['overflow-'..dir] = 'auto' end end for CSS, defaultValue in pairs(defaults[elem]) do CSSvalue[elem][CSS] = CSSvalue[elem][CSS] or defaultValue end end end local function renderSelect(contents) local tabs_pages = mw.html.create('div') :addClass('tabs_pages stab ' .. CSSvalue['stab']['class']) :css('grid-template-columns', string.rep('1fr ', tonumber(contents['splitCount']))) for _, CSS in ipairs(ordering['stab']) do tabs_pages:css(CSS, CSSvalue['stab'][CSS]) end for originalIndex, tabIndex in ipairs(ordering['tabIndices']) do local sitm = tabs_pages:tag('div') :addClass('tab sitm ' .. CSSvalue['sitm']['class']) :wikitext(contents['tab' .. tabIndex]) if originalIndex == initialTab then sitm:addClass('active') end for _, CSS in ipairs(ordering['sitm']) do sitm:css(CSS, CSSvalue['sitm'][CSS]) end end return tostring(tabs_pages) end local function renderContent(contents) local tabs_contents = mw.html.create('div') :addClass('tabs-contents ctab ' .. CSSvalue['ctab']['class']) for _, CSS in ipairs(ordering['ctab']) do tabs_contents:css(CSS, CSSvalue['ctab'][CSS]) end for originalIndex, tabIndex in ipairs(ordering['tabIndices']) do local citm = tabs_contents:tag('div') :addClass('tab-c citm ' .. CSSvalue['citm']['class']) :wikitext(contents['content' .. tabIndex]) if originalIndex == initialTab then citm:addClass('active') end for _, CSS in ipairs(ordering['citm']) do citm:css(CSS, CSSvalue['citm'][CSS]) end end return tostring(tabs_contents) end function p.selectTable(frame) local args = {} local page_args = frame:getParent().args; for k, v in pairs(page_args) do k = '' .. k if v ~= 'nil' then if notCSS[k] then args[k] = v else args[replaceArgsName(k)] = v end end end initialTab = tonumber(args['initialTab']) local validArgs = {stgt=true, stab=true, sitm=true, ctab=true, citm=true} for k, v in pairs(args) do k = '' .. k; v = '' .. v if not (notCSS[k] or k:match('^content%d+')) then if k:match('^tab%d+$') then table.insert(ordering['tabIndices'], tonumber(k:sub(4))) elseif validArgs[k:sub(1, 4)] then local prefix = k:sub(1, 4) local CSS = k:sub(5) CSSvalue[prefix][CSS] = v else CSSvalue['stgt'][k] = v end end end local horizontal = args['textDisplay']=='left' or args['textDisplay']=='right' fillWithDefaultCSS(args, horizontal) if horizontal then CSSvalue['stgt']['class'] = CSSvalue['stgt']['class'] .. ' hori' CSSvalue['stab']['class'] = CSSvalue['stab']['class'] .. ' hori' CSSvalue['ctab']['class'] = CSSvalue['stab']['class'] .. ' hori' end local elements = {'stgt', 'stab', 'sitm', 'ctab', 'citm'} for _, s in ipairs(elements) do for k, _ in pairs(CSSvalue[s]) do if k ~= 'class' then table.insert(ordering[s], k) end end table.sort(ordering[s]) end table.sort(ordering['tabIndices']) local mainDiv = mw.html.create('div') mainDiv:addClass('tabs-container stgt ' .. CSSvalue['stgt']['class']) for _, divCSS in ipairs(ordering['stgt']) do mainDiv:css(divCSS, CSSvalue['stgt'][divCSS]) end if args['textDisplay'] == 'top' or args['textDisplay'] == 'left' then mainDiv:node(renderContent(args)) mainDiv:node(renderSelect(args)) else mainDiv:node(renderSelect(args)) mainDiv:node(renderContent(args)) end return tostring(mainDiv) end return p
本页使用的模板:
模块:Test2/doc
(
查看源代码
)
返回
模块:Test2
。
导航菜单
个人工具
登录
命名空间
模块
讨论
English
查看
阅读
查看源代码
查看历史
更多
搜索
导航
首页
最近更改
随机页面
学习园地
新人须知
教程整合
论坛百科
SS分区介绍
论坛设定
论坛文化
传奇殿堂
SS大事年表
SS大学图书馆
维基事务
基本规则
新手指南——技术
新手指南——内容
wiki语法手册
规范全集
工具
链入页面
相关更改
特殊页面
页面信息