模块:Test

来自SS唯基
攸萨讨论 | 贡献2022年1月27日 (四) 01:17的版本
跳到导航 跳到搜索

Documentation icon 模块文档 [-查看-] [编辑] [历史] [刷新]

这个模块是干什么用的?

该模块用于测试,测试完请清空模块内的内容

基本用法

local p = {}

function p.函数名()
return '返回内容'
end

function p.函数名2()
return '返回内容2'
end

return

以上为最基本的用法,其他请自行学习Lua语言

其他

同样也有一个用于测试模板的模板,点这里进入


--
--修改自模块历史活动
--

local p = {}

local args--存参数
local frame
local anums = {}--存行数

--添加行
function addTableRow(tbl)
    return tbl:tag('tr')
end

--处理表头
function renderHeaderRow(tbl)

    local headerRow = addTableRow(tbl)
    headerRow
        :tag('th')
            :wikitext('届数')
	    :css('color','#004B97')--文字颜色
	    :css('background-color','#FF9224')--底色
            :css('border-width', '5px 1px 3px 5px')
            :css('border-color','#D26900 #FF9224 #D26900 #D26900')
            :css('border-top-style','double')
            :css('border-bottom-style','dashed')
            :css('border-left-style','double')
            :css('width', '10%')
            :attr('scope', 'column')
        :done()
        :tag('th')
            :wikitext('作者')
	    :css('color','#0066CC')
	    :css('background-color','#FFAD86')
            :css('border-width', '5px 1px 3px 1px')
            :css('border-color','#D26900 #FFAD86 #D26900 #FFAD86')
            :css('border-top-style','double')
            :css('border-bottom-style','dashed')
            :css('border-right-style','double')
            :css('width', '25%')
            :attr('scope', 'column')
        :done()
        :tag('th')
            :wikitext('活动主题')
	    :css('color','#0066CC')
	    :css('background-color','#FFAD86')
            :css('border-width', '5px 5px 3px 1px')
            :css('border-color','#D26900 #D26900 #D26900 #FF9224')
            :css('border-top-style','double')
            :css('border-bottom-style','dashed')
            :css('border-right-style','double')
            :css('width', '35%')
            :attr('scope', 'column')
        :done()

end

--处理某一行数据
function renderListRow(tb1, anum)
    local row = addTableRow(tb1)--添加行,并将当前行传给row

    if args['a' .. anum] then
        local activity = row:tag('td')--添加单元格,并将该单元格传给activity
        activity
        :attr('align', 'center')--单元格样式
	:css('padding','3px')
	:css('color','#004B97')--文字颜色
	:css('background-color','#FF9224')--底色
        :css('border-width', '5px 1px 3px 5px')
        :css('border-color','#D26900 #FF9224 #D26900 #D26900')
        :css('border-top-style','dashed')
        :css('border-bottom-style','double')
        :css('border-left-style','double')
        :wikitext(args['a' .. anum])
    end
    
    local info = row:tag('td')--再添加单元格,并将该单元格传给info

    info
    :wikitext(args['i' .. anum])--单元格样式
    :attr('align', 'center')
    :css('color','#0066CC')
    :css('padding','10px')
    :css('background-color','#FFDCB9')
    :css('border-width', '5px 1px 3px 1px')
    :css('border-color','#D26900 #FFDCB9 #D26900 #FF9224')
    :css('border-top-style','dashed')
    :css('border-bottom-style','double')
    :css('border-right-style','double')

    local info1 = row:tag('td')--再添加单元格,并将该单元格传给info

    info1
    :wikitext(args['e' .. anum])--单元格样式
    :css('color','#0066CC')
    :css('background-color','#FFE4CA')
    :css('border-width', '5px 5px 3px 1px')
    :css('border-color','#D26900 #D26900 #D26900 #FF9224')
    :css('padding','10px')
    :css('border-top-style','dashed')
    :css('border-bottom-style','double')
    :css('border-right-style','double')

end

--处理表格
function renderMainTable()
    local tb1 = mw.html.create('table')--创建table
        --.attr('cellspacing', 0)--在这里table添加样式
        :addClass('wikitable')
        :addClass('mw-collapsible')
        :addClass('mw-collapsed')
        :css('width', '60%')
    
    renderHeaderRow(tb1)
    for i, anum in ipairs(anums) do--循环处理每一行数据
        renderListRow(tb1, anum)
    end

    return tb1
end

function p._historicalActivity(Args)
    args = Args
    
    for k, v in pairs(args) do--计算行数
        local anum = ('' .. k):match('^a(%d+)$')
        if anum then table.insert(anums, tonumber(anum)) end
    end
    table.sort(anums)

    --处理表格
    local tb1 = renderMainTable()

    local res = mw.html.create()
    res:node(tb1)
 
    return tostring(res)
end

function p.historicalActivity(frame)
    local args = {}
    local parent_args = frame:getParent().args;--获取页面传来得参数,而不是模板的参数

    -- Out of order parsing bug.
    -- 不懂
    local temp;
    for i = 1, 50 do
        temp = parent_args["a" .. tostring(i)];
        temp = parent_args["i" .. tostring(i)];
    end
    
    --将获取的参数传给args
    for k, v in pairs(parent_args) do
        if v ~= '' then
            args[k] = v
        end
    end
    return p._historicalActivity(args)
end

return p