Module:Shortcut
外观
此模块的文档可以在Module:Shortcut/doc创建
-- This module implements {{shortcut}}.
-- Load required modules
local checkType = require('libraryUtil').checkType
local yesno = require('Module:Yesno')
local tools = require 'Module:TableTools'
local compressArray = tools.compressArray
local function noRedirect(page)
local isRedirect = require 'Module:Redirect'.luaIsRedirect(page)
if isRedirect then
return require 'Module:Fullurl'._fullurl2(page, {redirect='no'}, page)
else
return '[[:' .. page .. ']]'
end
end
local p = {}
function p._main(args, frame, type)
args = args or {}
frame = frame or mw.getCurrentFrame()
local isCategorized = not yesno(args.nocat)
-- 验证快捷方式是否有效。
for i, shortcut in tools.sparseIpairs(args) do
if _G.type(shortcut) ~= 'string' or #shortcut < 1 then
error('无效的快捷方式:“' .. tostring(shortcut) .. '”,请确保该参数必须是字符串且至少一个字符', 2)
end
end
local root = mw.html.create()
root:wikitext(frame:extensionTag{ name = 'templatestyles', args = {
src = type == 'mbox' and 'Template:Mbox/shortcut.css' or 'Shortcut/styles.css'
} })
-- Shortcut heading
local shortcutHeading = '[[Help:快捷方式|快捷方式]]'
if yesno(args.policy) then
shortcutHeading = '[[Help:快捷方式|方针快捷方式]]'
end
-- Shortcut box
local shortcutList = root
:tag('div')
:addClass('module-shortcutboxplain noprint')
:addClass(type == 'Mbox' and 'module-mboxshortcutplain' or nil)
:attr('role', 'note')
if args.float == 'left' then
shortcutList:addClass('module-shortcutboxplain-left')
end
if shortcutHeading then
shortcutList
:tag('div')
:addClass('module-shortcutlist')
:wikitext(shortcutHeading)
end
local list = shortcutList:tag('ul')
for i, shortcut in ipairs(args) do
list:tag('li'):wikitext(noRedirect(shortcut))
end
return tostring(root)
end
function p.main(frame)
local args = require('Module:Arguments').getArgs(frame)
return p._main(tools.shallowClone(args), frame)
end
function p._ombx(args, frame, type)
error '请直接使用_main方法而非_ombox,并将type参数设为 "mbox"'
end
-- @deprecated
function p.ombox(frame)
local args = require('Module:Arguments').getArgs(frame)
return p._main(tools.shallowClone(args), frame, 'mbox')
end
p.mbox = p.ombox
function p._template(args, frame, type)
error '请直接使_main(args, frame, type)而非_template'
end
function p.template(frame)
local args = require('Module:Arguments').getArgs(frame)
return p._main(tools.shallowClone(args), frame, 'template')
end
function p._ombx_template(args, frame, type)
error '请直接使用_main(args, frame, "mbox")而非_ombox_template'
end
-- @deprecated
function p.ombox_template(frame)
local args = require('Module:Arguments').getArgs(frame)
return p._main(args, frame, 'mbox')
end
p.mbox_template = p.ombox_template
return p