模块:SoftwareInfo:修订间差异
来自陋室
更多操作
删除的内容 添加的内容
Maintenance script(留言 | 贡献) 阶段C原型:新增Module:SoftwareInfo(修复语法) |
Maintenance script(留言 | 贡献) 阶段C切换:增强Module:SoftwareInfo并支持主模板 |
||
| 第29行: | 第29行: | ||
end |
end |
||
function |
local function languageDisplay(code) |
||
code = trim(code) |
|||
if code == '' then |
|||
return '未知' |
|||
end |
|||
local ok, name = pcall(function() |
|||
return mw.language.fetchLanguageName(code, 'zh') |
|||
end) |
|||
if ok and name and trim(name) ~= '' then |
|||
return name |
|||
end |
|||
return code |
|||
end |
|||
local function renderCore(frame, toolTemplate, toolTarget) |
|||
local args = frame.args or {} |
local args = frame.args or {} |
||
local out = {} |
local out = {} |
||
| 第47行: | 第61行: | ||
addRow(out, "'''文件大小:'''", v(args, '大小', '未知')) |
addRow(out, "'''文件大小:'''", v(args, '大小', '未知')) |
||
addRow(out, "'''更新日期:'''", v(args, '更新日期', '未知')) |
addRow(out, "'''更新日期:'''", v(args, '更新日期', '未知')) |
||
addRow(out, "'''语言:'''", |
addRow(out, "'''语言:'''", languageDisplay(args['语言'])) |
||
addRow(out, "'''支持系统:'''", v(args, '系统', '未知')) |
addRow(out, "'''支持系统:'''", v(args, '系统', '未知')) |
||
addRow(out, "'''支持架构:'''", v(args, '架构', '未知')) |
addRow(out, "'''支持架构:'''", v(args, '架构', '未知')) |
||
| 第67行: | 第81行: | ||
table.insert(out, frame:expandTemplate { |
table.insert(out, frame:expandTemplate { |
||
title = |
title = toolTemplate, |
||
args = { |
args = { |
||
target = |
target = toolTarget, |
||
parent = |
parent = toolTarget, |
||
} |
} |
||
}) |
}) |
||
return table.concat(out, '\n') |
return table.concat(out, '\n') |
||
end |
|||
function p.render(frame) |
|||
return renderCore(frame, 'PageToolsLink', 'Template:SoftwareInfo') |
|||
end |
|||
function p.renderSandbox(frame) |
|||
return renderCore(frame, 'PageToolsLink/sandbox', 'Template:SoftwareInfo/sandbox') |
|||
end |
end |
||
2026年5月19日 (二) 23:19的最新版本
此模块的文档可以在模块:SoftwareInfo/doc创建
local p = {}
local function trim(s)
if not s then
return ''
end
return mw.text.trim(s)
end
local function v(args, key, fallback)
local value = trim(args[key])
if value == '' then
return fallback
end
return value
end
local function linkOrText(url, label, empty)
url = trim(url)
if url == '' then
return empty
end
return string.format('[%s %s]', url, label)
end
local function addRow(out, label, value)
table.insert(out, '|-')
table.insert(out, '| ' .. label .. ' || ' .. value)
end
local function languageDisplay(code)
code = trim(code)
if code == '' then
return '未知'
end
local ok, name = pcall(function()
return mw.language.fetchLanguageName(code, 'zh')
end)
if ok and name and trim(name) ~= '' then
return name
end
return code
end
local function renderCore(frame, toolTemplate, toolTarget)
local args = frame.args or {}
local out = {}
table.insert(out, '{| class="wikitable"')
table.insert(out, '|+ 软件名称:' .. mw.title.getCurrentTitle().text)
table.insert(out, '! colspan="2" | 基本信息')
addRow(out, "'''开发者:'''", v(args, '开发者', '未知'))
addRow(out, "'''官网:'''", linkOrText(args['官网'], '官网', '无'))
addRow(out, "'''下载:'''", linkOrText(args['下载'], '下载链接', '无'))
addRow(out, "'''类别:'''", v(args, '类别', '未知'))
addRow(out, "'''状态:'''", v(args, '状态', '未知'))
table.insert(out, '|-')
table.insert(out, '! colspan="2" | 架构与版本')
addRow(out, "'''当前版本:'''", v(args, '版本号', '未知'))
addRow(out, "'''文件大小:'''", v(args, '大小', '未知'))
addRow(out, "'''更新日期:'''", v(args, '更新日期', '未知'))
addRow(out, "'''语言:'''", languageDisplay(args['语言']))
addRow(out, "'''支持系统:'''", v(args, '系统', '未知'))
addRow(out, "'''支持架构:'''", v(args, '架构', '未知'))
addRow(out, "'''开发语言:'''", v(args, '开发语言', '未知'))
addRow(out, "'''界面类型:'''", v(args, '界面', '未知'))
table.insert(out, '|-')
table.insert(out, '! colspan="2" | 功能与发行')
addRow(out, "'''主要功能:'''", v(args, '功能', '未知'))
addRow(out, "'''相关软件:'''", v(args, '相关软件', '未知'))
addRow(out, "'''发行方式:'''", v(args, '发行方式', '未知'))
table.insert(out, '|-')
table.insert(out, '! colspan="2" | 贡献与许可证')
addRow(out, "'''许可证:'''", v(args, '许可证', '未知'))
addRow(out, "'''GitHub:'''", linkOrText(args['GitHub'], 'GitHub 页面', '无'))
addRow(out, "'''贡献方式:'''", v(args, '贡献方式', '未知'))
table.insert(out, '|}')
table.insert(out, frame:expandTemplate {
title = toolTemplate,
args = {
target = toolTarget,
parent = toolTarget,
}
})
return table.concat(out, '\n')
end
function p.render(frame)
return renderCore(frame, 'PageToolsLink', 'Template:SoftwareInfo')
end
function p.renderSandbox(frame)
return renderCore(frame, 'PageToolsLink/sandbox', 'Template:SoftwareInfo/sandbox')
end
return p