模块:Shortcut

本页使用了标题或全文手工转换,现处于中国大陆简体模式
求闻百科,共笔求闻

本模块用来在页面侧边显示该页面的快捷方式。

用法

在维基文本中使用

如果要从wiki标记语法引入,本模板应当从某个模板进行调用,通常使用的模板为模板链接:{{shortcut}}。请参考该模板的文件说明。

用于Lua

如果要从Lua使用本模块,首先请读取本模板。

local Shortcut = require('Module:Shortcut')

然后您可以依据下列语法创建快捷方式方块:

Shortcut._main(args, frame, type)
  • args 包含了该参数,其中的数组部分是快捷方式的页面。
  • frame 框架对象。
  • type 显示的捷径的类型,可以是"ombox"nil

技术细节

本模块根本没有Module:Shortcut/config,不需要通过单独的模块来配置其内容。

上述文档内容嵌入自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