跳转到内容

模块:ExampleTable:修订间差异

来自DJMAX中文资料库
Raxter留言 | 贡献
无编辑摘要
Raxter留言 | 贡献
无编辑摘要
第5行: 第5行:
     local args = getArgs(frame)
     local args = getArgs(frame)
      
      
    -- 获取输入和输出参数
     local input = args[1] or ""
     local input = args[1] or ""
     local output = args[2]
     local output = args[2]
      
      
     -- 检测input中是否包含nowiki标签
     -- 如果 output 未提供,则移除左侧的 <nowiki> 标签并渲染内容
    local has_nowiki = input:match("</?nowiki>")
   
     if not output then
     if not output then
        -- 检查输入是否包含 <nowiki> 标签
        local has_nowiki = input:match("</?nowiki>")
       
         if has_nowiki then
         if has_nowiki then
             -- 有nowiki标签:移除nowiki标签并渲染内容,同时去除多余空格
             -- 移除 <nowiki> 标签并渲染内容
             local nowiki_content = input:gsub("</?nowiki>", ""):gsub("^%s*(.-)%s*$", "%1")
             local nowiki_content = input:gsub("</?nowiki>", "")
             output = frame:preprocess(nowiki_content)
             output = frame:preprocess(nowiki_content)
         else
         else
             -- 没有nowiki标签:input已经被预处理,所以output也用同样的值
             -- 如果输入没有 <nowiki> 标签,则直接使用输入作为输出
             output = input
             output = input
         end
         end
    end
   
    -- 如果是嵌套调用,确保input保持原始状态
    if frame:getParent() then
        input = args[1] or ""
     end
     end
      
      
第30行: 第27行:
     output = output:gsub("\n+", "\n"):gsub("^%s*(.-)%s*$", "%1")
     output = output:gsub("\n+", "\n"):gsub("^%s*(.-)%s*$", "%1")
      
      
    -- 创建表格HTML
     local tableHtml = mw.html.create('table')
     local tableHtml = mw.html.create('table')
         :addClass('wikitable')
         :addClass('wikitable')
第50行: 第48行:
                 :tag('pre')
                 :tag('pre')
                     :css('white-space', 'pre-wrap')
                     :css('white-space', 'pre-wrap')
                     :wikitext(input)
                     :wikitext(input) -- 左侧显示原始输入(包括 <nowiki> 标签)
                 :done()
                 :done()
             :done()
             :done()
第58行: 第56行:
                     width = '50%'
                     width = '50%'
                 })
                 })
                 :wikitext(output)
                 :wikitext(output) -- 右侧显示输出内容
             :done()
             :done()
         :done()
         :done()

2025年10月16日 (四) 09:15的版本

此模块的文档可以在模块:ExampleTable/doc创建

local p = {}
local getArgs = require('Module:Arguments').getArgs

function p.main(frame)
    local args = getArgs(frame)
    
    -- 获取输入和输出参数
    local input = args[1] or ""
    local output = args[2]
    
    -- 如果 output 未提供,则移除左侧的 <nowiki> 标签并渲染内容
    if not output then
        -- 检查输入是否包含 <nowiki> 标签
        local has_nowiki = input:match("</?nowiki>")
        
        if has_nowiki then
            -- 移除 <nowiki> 标签并渲染内容
            local nowiki_content = input:gsub("</?nowiki>", "")
            output = frame:preprocess(nowiki_content)
        else
            -- 如果输入没有 <nowiki> 标签,则直接使用输入作为输出
            output = input
        end
    end
    
    -- 清理输出中的多余空格和换行
    output = output:gsub("\n+", "\n"):gsub("^%s*(.-)%s*$", "%1")
    
    -- 创建表格HTML
    local tableHtml = mw.html.create('table')
        :addClass('wikitable')
        :tag('tr')
            :tag('th')
                :css('width', '50%')
                :wikitext('输入')
            :done()
            :tag('th')
                :css('width', '50%')
                :wikitext('输出')
            :done()
        :done()
        :tag('tr')
            :tag('td')
                :css({
                    ['vertical-align'] = 'middle',
                    width = '50%'
                })
                :tag('pre')
                    :css('white-space', 'pre-wrap')
                    :wikitext(input)  -- 左侧显示原始输入(包括 <nowiki> 标签)
                :done()
            :done()
            :tag('td')
                :css({
                    ['vertical-align'] = 'middle',
                    width = '50%'
                })
                :wikitext(output)  -- 右侧显示输出内容
            :done()
        :done()
    
    return tostring(tableHtml)
end

return p