模块:Test
跳到导航
跳到搜索
这个模块是干什么用的?
该模块用于测试,测试完请清空模块内的内容
基本用法
local p = {} function p.函数名() return '返回内容' end function p.函数名2() return '返回内容2' end return
以上为最基本的用法,其他请自行学习Lua语言
其他
同样也有一个用于测试模板的模板,点这里进入
local p = {} local params = {} params["prefix" ] = {'a', 'i', 'e'} params["display_title" ] = {'false'} params["title" ] = "表格默认标题" params["width" ] = "60%" params["item_per_tab" ] = "50" params["header" ] = {'作者', '主题', '简介'} params["color" ] = {'#004B97', '#0066CC', '#0066CC'} params["bg_color" ] = {'#FF9224', '#FFDCB9', '#FFE4CA'} params["color_alt" ] = {'#004B97', '#0066CC', '#0066CC'} params["bg_color_alt" ] = {'#FF9224', '#FFDCB9', '#FFE4CA'} params["header_color" ] = {'#004B97', '#0066CC', '#0066CC'} params["header_bg_color" ] = {'#FF9224', '#FFAD86', '#FFAD86'} params["display" ] = {'true', 'true', 'true'} params["col_width" ] = {'5%', '25%', '35%'} params["border_color" ] = { '#D26900 #FF9224 #D26900 #D26900', '#D26900 #FFDCB9 #D26900 #FF9224', '#D26900 #D26900 #D26900 #FF9224', } params["header_border_color" ] = { '#D26900 #FF9224 #D26900 #D26900', '#D26900 #FFAD86 #D26900 #FFAD86', '#D26900 #D26900 #D26900 #FF9224', } params["border_style" ] = { "dashed solid double double", "dashed double double solid", "dashed double double solid", } params["header_border_style" ] = { "double solid dashed double", "double double dashed solid", "double double dashed solid", } params["border_width" ] = { "5px 1px 3px 5px", "5px 1px 3px 1px", "5px 5px 3px 1px", } params["header_border_width" ] = { "5px 1px 3px 5px", "5px 1px 3px 1px", "5px 5px 3px 1px", } local global_param_list = { "title", "display_title", "width", "item_per_tab" } local col_param_list = { "header" , "color" , "bg_color" , "color_alt" , "bg_color_alt" , "header_color" , "header_bg_color" , "display" , "col_width" , "border_color" , "header_border_color" , "border_style" , "header_border_style" , "border_width" , "header_border_width" , } function renderHeader(tbl) local row = tbl:tag('tr') for i=1,3 do if params["display"][i] == "true" then local header_th = row:tag('th') header_th :wikitext(params["header"][i]) :css('padding' ,'10px') :css('width' , params["col_width" ][i]) :css('color' , params["header_color" ][i]) :css('background-color' , params["header_bg_color" ][i]) :css('border-width' , params["header_border_width" ][i]) :css('border-color' , params["header_border_color" ][i]) :css('border-style' , params["header_border_style" ][i]) end end end function renderRow(row_id, args, tbl) local row = tbl:tag('tr') for i=1,3 do if params["display"][i] == "true" then local info = row:tag('td') info :wikitext(args[params["prefix"][i] .. row_id]) --单元格样式 :css('padding' ,'10px') :css('width' , params["col_width" ][i]) :css('border-width' , params["border_width" ][i]) :css('border-color' , params["border_color" ][i]) :css('border-style' , params["border_style" ][i]) if row_id % 2 == 0 then info :css('color' , params["color" ][i]) :css('background-color' , params["bg_color" ][i]) else info :css('color' , params["color_alt" ][i]) :css('background-color' , params["bg_color_alt" ][i]) end end end end --处理表格 function renderTable(args, row_ids) local tbl = mw.html.create('table') :addClass('wikitable') :addClass('mw-collapsible') :addClass('mw-collapsed') :addClass('plainrowheaders') :css('display', 'block') :css('overflow-x', 'auto') :css('width', params["width"]) if params["display_title"] == "true" then local caption = tbl:tag('caption') caption :wikitext(title) :css('white-space', 'nowrap') end renderHeader(tbl) for _, a in ipairs(row_ids) do renderRow(a, args, tbl) end return tbl end function renderTabs(args) -- extract row_ids in each tables -- i hate lua why array subscribtion starts at 1 local tot_row_ids = {} local item_per_tab = tonumber(params["item_per_tab"]) for k, _ in pairs(args) do local anum = ('' .. k):match('^a(%d+)$') if anum then table.insert(tot_row_ids, tonumber(anum)) end end table.sort(tot_row_ids) local tab_count = (tableLength(tot_row_ids) - 1) / item_per_tab + 1 local tabs_row_ids = {} for i=1,tab_count do tabs_row_ids[i] = {} for j=1,item_per_tab do tabs_row_ids[i][j] = tot_row_ids[(i-1)*item_per_tab + j] end end -- if only one table is needed... if tab_count == 1 then return renderTable(args, next(tabs_row_ids)) end -- create tabs-container local tabs_div = mw.html.create('div') tabs_div:addClass("tabs-container") -- create tab ui list local tab_list = tabs_div:tag("ul") tab_list :addClass("tabs-pages") :css("margin", "0") for i, _ in ipairs(tabs_row_ids) do local list_ele = tab_list:tag("li") if i == 1 then list_ele:addClass("active") end list_ele :addClass("tab") :tag("strong") :wikitext(tostring((i-1)*item_per_tab+1).."~"..tostring(i*item_per_tab)) end -- create actual tables local tables_list = tabs_div:tag("div") tables_list:addClass("tabs-contents") for i, row_ids in ipairs(tabs_row_ids) do local table_ele = tables_list:tag("div") table_ele:addClass("tab-c") if i == 1 then table_ele:addClass("active") end local inner_content = table_ele:tag("div") inner_content :addClass("inner-content") :css("columns", "1") local content_tbl = renderTable(args, row_ids) inner_content:node(content_tbl) end return tabs_div end function tableLength(t) local count = 0 for _ in pairs(t) do count = count + 1 end return count end function p._historicalActivity(args) -- deal with params for _, key in ipairs(global_param_list) do if args[key] then params[key] = args[key] end end for _, key in ipairs(col_param_list) do for i=1,3 do if args[key..tostring(i)] then params[key][i] = args[key..tostring(i)] end end end --处理表格 local tb1 = renderTabs(args) local res = mw.html.create() res:node(tb1) return tostring(res) end function p.historicalActivity(frame) local args = {} local parent_args = frame:getParent().args;--获取页面传来得参数,而不是模板的参数 --将获取的参数传给args for k, v in pairs(parent_args) do if v ~= '' then args[k] = v end end return p._historicalActivity(args) end return p