跳转到内容

模块:ExampleTable:修订间差异

来自DJMAX中文资料库
Raxter留言 | 贡献
无编辑摘要
Raxter留言 | 贡献
无编辑摘要
 
(未显示同一用户的1个中间版本)
第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
         if has_nowiki then
         -- 移除 <nowiki> 标签
            -- 有nowiki标签:移除nowiki标签并渲染内容,同时去除多余空格
        local nowiki_content = input:gsub("</?nowiki>", "")
            local nowiki_content = input:gsub("</?nowiki>", ""):gsub("^%s*(.-)%s*$", "%1")
         -- 渲染内容
            output = frame:preprocess(nowiki_content)
        output = frame:preprocess(nowiki_content)
         else
            -- 没有nowiki标签:input已经被预处理,所以output也用同样的值
            output = input
        end
    end
   
    -- 如果是嵌套调用,确保input保持原始状态
    if frame:getParent() then
        input = args[1] or ""
     end
     end
      
      
第30行: 第20行:
     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行: 第41行:
                 :tag('pre')
                 :tag('pre')
                     :css('white-space', 'pre-wrap')
                     :css('white-space', 'pre-wrap')
                     :wikitext(input)
                     :wikitext(input) -- 左侧显示原始输入(包括 <nowiki> 标签)
                 :done()
                 :done()
             :done()
             :done()
第58行: 第49行:
                     width = '50%'
                     width = '50%'
                 })
                 })
                 :wikitext(output)
                 :wikitext(output) -- 右侧显示输出内容
             :done()
             :done()
         :done()
         :done()

2025年10月16日 (四) 09:22的最新版本

此模块的文档可以在模块: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 nowiki_content = input:gsub("</?nowiki>", "")
        -- 渲染内容
        output = frame:preprocess(nowiki_content)
    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