模块:Lua banner

求闻百科,共笔求闻

本模块用于执行{{Lua}}模板。

通过wikitext使用

本模块不能直接被wikitext使用,只能通过{{Lua}}模板调用。请参阅模板说明书。

通过Lua模块使用

为通过其他Lua模块使用本模块,先要载入本模块。

local mLuaBanner = require('Module:Lua banner')

然后可以通过_main功能生成边框。

mLuaBanner._main(args)

追踪分类

上述文档内容嵌入自Module:Lua banner/doc编辑 | 历史
编者可以在本模块的沙盒创建 | 镜像和测试样例创建页面进行实验。
请将模块自身所属的分类添加在文档中。本模块的子页面
--[=[

这个模块由[[Template:Lua]]调用
暂无模块调用
/****************************/
這個模組由[[Template:Lua]]調用
暫無模組調用

]=]--

local yesno = require('Module:Yesno')
local mList = require('Module:List/sandbox')
local mTableTools = require('Module:TableTools')
local getArgs = require "Module:Arguments".getArgs
local mMessageBox = require('Module:Message box')
local subpageBlacklist = {
	doc = true,
	sandbox = true,
	sandbox2 = true,
	testcases = true
}

local p = {}

local function argToLink(t)
	-- 将单个参数转化为通往模块的链接。例如将abc转化为模块:Abc|Abc,如果手动添加了模块名字空间也无妨。
	local title = mw.title.new(t, 828)
	return string.format('[[%s|%s]]',tostring(title),tostring(t))

end

function p.main3(frame)
	local args = (getArgs(frame))
	local currentTitle = mw.title.getCurrentTitle()
	local items = {}
	for k,v in mTableTools.sparseIpairs(args) do
		table.insert(items, {content = v})
	end
	if #items==0 then
		table.insert(items, {content = subpageBlacklist[currentTitle.subpageText] and currentTitle.baseText or currentTitle.text})
	end
	return mList.renderList {
		items = items,
		modify = argToLink
	} .. p.renderTrackingCategories(args, args, currentTitle) -- 省略第三个参数titleObj
end

-- function p.main(frame)
-- 	local origArgs = frame:getParent().args
-- 	local args = {}
-- 	for k, v in pairs(origArgs) do
-- 		v = v:match('^%s*(.-)%s*$')
-- 		if v ~= '' then
-- 			args[k] = v
-- 		end
-- 	end
-- 	return p._main(frame, args)
-- end

-- function p._main(frame, args)
-- 	local modules = mTableTools.compressSparseArray(args)
-- 	local box = p.renderBox(modules)
-- 	local trackingCategories = p.renderTrackingCategories(args, modules)
-- 	return box .. trackingCategories
-- end
-- -- if action=edit 
-- function p.main2(frame)
-- 	local origArgs = frame:getParent().args
-- 	local args = {}
-- 	for k, v in pairs(origArgs) do
-- 		v = v:match('^%s*(.-)%s*$')
-- 		if v ~= '' then
-- 			args[k] = v
-- 		end
-- 	end
-- 	local modules = mTableTools.compressSparseArray(args)
-- 	return p.renderBox(modules)
-- end
-- --end

-- function p.renderBox(modules)
-- 	local boxArgs = {}
-- 	if #modules < 1 then
-- 		boxArgs.text = '<strong class="error">错误:没有指定-{zh-hans:模块; zh-hant:模組;}-</strong>'
-- 	else
-- 		local moduleLinks = {}
-- 		for i, module in ipairs(modules) do
-- 			moduleLinks[i] = string.format('%s', module)
-- 			moduleLinks[i] = '[[:Module:' .. mw.title.new(moduleLinks[i]).text .. ']]'
-- 		end
-- 		local moduleList = mList.makeList('bulleted', moduleLinks)
-- 		boxArgs.text = '此' .. 
-- 			(mw.title.getCurrentTitle():inNamespaces(828,829) and '-{zh-hans:模块; zh-hant:模組;}-' or '模板') ..
-- 			'使用[[Qiuwen:Lua|Lua语言]]:\n' .. moduleList
-- 	end
-- 	boxArgs.type = 'notice'
-- 	boxArgs.small = true
-- 	boxArgs.image = '[[File:Lua-logo-nolabel.svg|30px|alt=|link=]]'
-- 	return mMessageBox.main('mbox', boxArgs)
-- end

function p.renderTrackingCategories(args, modules, titleObj)
	if yesno(args.nocat) then
		return ''
	end
	
	local cats = {}
	
	-- 错误分类
	-- if #modules < 1 then
	-- 	cats[#cats + 1] = '有错误的Lua模板'
	-- end
	
	-- Lua templates category
	titleObj = titleObj or mw.title.getCurrentTitle()
	if titleObj.namespace == 10 
		and not subpageBlacklist[titleObj.subpageText]
	then
		cats[#cats + 1] = '基于Lua模块编写的模板'
	end
	
	for i, cat in ipairs(cats) do
		cats[i] = string.format('[[Category:%s]]', cat)
	end
	return table.concat(cats)
end

return p