跳转到内容

Module:Lua banner:修订间差异

轻之舟百科,让知识轻装启航
IdleTap-bot​(留言 | 贡献)
导入自求闻百科
 
zhwiki>A2569875
小 Module:TrackingCategory不要重造輪子。
标签:已被回退
第1行: 第1行:
--[=[
--[=[


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


第10行: 第10行:


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


local p = {}
local p = {}


local function argToLink(t)
function p.main(frame)
-- 将单个参数转化为通往模块的链接。例如将abc转化为模块:Abc|Abc,如果手动添加了模块名字空间也无妨。
local origArgs = frame:getParent().args
local title = mw.title.new(t, 828)
local args = {}
return string.format('[[%s|%s]]',tostring(title),tostring(t))
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 _ = frame
local modules = mTableTools.compressSparseArray(args)
local box = p.renderBox(modules)
p.renderTrackingCategories(args, modules)
return box
end
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.main3(frame)
function p.renderBox(modules)
local args = (getArgs(frame))
local boxArgs = {}
local currentTitle = mw.title.getCurrentTitle()
if #modules < 1 then
local items = {}
boxArgs.text = '<strong class="error">错误:未指定-{zh-hans:模块; zh-hant:模組;}-</strong>'
for k,v in mTableTools.sparseIpairs(args) do
else
table.insert(items, {content = v})
local moduleLinks = {}
for i, module in ipairs(modules) do
moduleLinks[i] = string.format('%s', module)
moduleLinks[i] = '[[:Module:' .. mw.title.new(moduleLinks[i]).text .. ']]'
--local maybeSandbox = mw.title.new(module .. '/sandbox')
--if maybeSandbox.exists then
-- moduleLinks[i] = moduleLinks[i] .. string.format('([[:%s|沙盒]])', maybeSandbox.fullText)
--end
end
local moduleList = mList.makeList('bulleted', moduleLinks)
boxArgs.text = '此' ..
(mw.title.getCurrentTitle():inNamespaces(828,829) and '-{zh-hans:模块; zh-hant:模組;}-' or '模板') ..
'使用[[Wikipedia:Lua|Lua语言]]:\n' .. moduleList
end
end
if #items==0 then
boxArgs.type = 'notice'
table.insert(items, {content = subpageBlacklist[currentTitle.subpageText] and currentTitle.baseText or currentTitle.text})
boxArgs.small = true
end
boxArgs.image = '[[File:Lua-Logo.svg|30px|alt=|link=]]'
return mList.renderList {
return mMessageBox.main('mbox', boxArgs)
items = items,
modify = argToLink
} .. p.renderTrackingCategories(args, args, currentTitle) -- 省略第三个参数titleObj
end
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)
function p.renderTrackingCategories(args, modules, titleObj)
第108行: 第84行:
-- 错误分类
-- 错误分类
-- if #modules < 1 then
if #modules < 1 then
-- cats[#cats + 1] = '有错误的Lua模板'
cats[#cats + 1] = '有错误的Lua模板'
-- end
end
-- Lua templates category
-- Lua templates category
titleObj = titleObj or mw.title.getCurrentTitle()
titleObj = titleObj or mw.title.getCurrentTitle()
local subpageBlacklist = {
doc = true,
sandbox = true,
sandbox2 = true,
testcases = true
}
if titleObj.namespace == 10  
if titleObj.namespace == 10  
and not subpageBlacklist[titleObj.subpageText]
and not subpageBlacklist[titleObj.subpageText]
then
then
cats[#cats + 1] = '基于Lua模块编写的模板'
cats[#cats + 1] = 'Lua模板'
local category = args.category
if not category then
local categories = {
['Module:String'] = '使用Module:String的模板',
--['Module:Math'] = '使用Math Lua模块的模板',
--['Module:BaseConvert'] = '使用BaseConvert Lua模块的模板',
--['Module:Citation'] = '使用Citation Lua模块的模板'
}
categories['Module:Citation/CS1'] = categories['Module:Citation']
category = modules[1] and categories[modules[1]]
end
if category then
cats[#cats + 1] = category
end
local protLevels = {
autoconfirmed = 1,
extendedconfirmed = 2,
templateeditor = 3,
sysop = 4
}
local currentProt = titleObj.protectionLevels["edit"][1]
if currentProt == nil then currentProt = 0 else currentProt = protLevels[currentProt] end
for i, module in ipairs(modules) do
local module_title = mw.title.new(module)
if (module_title or {}).protectionLevels then --能夠讀取保護狀態的標題
if mw.title.new(module).protectionLevels["edit"] then
local moduleProt = mw.title.new(module).protectionLevels["edit"][1]
if moduleProt == nil then moduleProt = 0 else moduleProt = protLevels[moduleProt] end
if moduleProt < currentProt then
cats[#cats + 1] = "使用受保护Lua模块的模板"
break
end
end
end
end
end
end
local frame = mw.getCurrentFrame()
for i, cat in ipairs(cats) do
for i, cat in ipairs(cats) do
cats[i] = string.format('[[Category:%s]]', cat)
TrackingCategory.append(frame,cat)
end
end
return table.concat(cats)
end
end


return p
return p

2026年10月4日 (日) 11:11的版本

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

通过wikitext使用

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

通过Lua模块使用

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

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

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

mLuaBanner._main(args)

追踪分类


--[=[

本模块由[[Template:Lua]]调用
暂无模块调用
/****************************/
本模組由[[Template:Lua]]調用
暫無模組調用

]=]--

local yesno = require('Module:Yesno')
local mList = require('Module:List')
local mTableTools = require('Module:TableTools')
local mMessageBox = require('Module:Message box')
local TrackingCategory = require('Module:TrackingCategory')

local p = {}

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 _ = frame
	local modules = mTableTools.compressSparseArray(args)
	local box = p.renderBox(modules)
	p.renderTrackingCategories(args, modules)
	return box
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 .. ']]'
			--local maybeSandbox = mw.title.new(module .. '/sandbox')
			--if maybeSandbox.exists then
			--	moduleLinks[i] = moduleLinks[i] .. string.format('([[:%s|沙盒]])', maybeSandbox.fullText)
			--end
		end
		local moduleList = mList.makeList('bulleted', moduleLinks)
		boxArgs.text = '此' .. 
			(mw.title.getCurrentTitle():inNamespaces(828,829) and '-{zh-hans:模块; zh-hant:模組;}-' or '模板') ..
			'使用[[Wikipedia:Lua|Lua语言]]:\n' .. moduleList
	end
	boxArgs.type = 'notice'
	boxArgs.small = true
	boxArgs.image = '[[File:Lua-Logo.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()
	local subpageBlacklist = {
		doc = true,
		sandbox = true,
		sandbox2 = true,
		testcases = true
	}
	if titleObj.namespace == 10 
		and not subpageBlacklist[titleObj.subpageText]
	then
		cats[#cats + 1] = 'Lua模板'
		
		local category = args.category
		if not category then
			local categories = {
				['Module:String'] = '使用Module:String的模板',
				--['Module:Math'] = '使用Math Lua模块的模板',
				--['Module:BaseConvert'] = '使用BaseConvert Lua模块的模板',
				--['Module:Citation'] = '使用Citation Lua模块的模板'
			}
			categories['Module:Citation/CS1'] = categories['Module:Citation']
			category = modules[1] and categories[modules[1]]
		end
		if category then
			cats[#cats + 1] = category
		end
		local protLevels = {
			autoconfirmed = 1,
			extendedconfirmed = 2,
			templateeditor = 3,
			sysop = 4
		}
		local currentProt = titleObj.protectionLevels["edit"][1]
		if currentProt == nil then currentProt = 0 else currentProt = protLevels[currentProt] end
		for i, module in ipairs(modules) do
			local module_title = mw.title.new(module)
			if (module_title or {}).protectionLevels then --能夠讀取保護狀態的標題
				if mw.title.new(module).protectionLevels["edit"] then
					local moduleProt = mw.title.new(module).protectionLevels["edit"][1]
					if moduleProt == nil then moduleProt = 0 else moduleProt = protLevels[moduleProt] end
					if moduleProt < currentProt then
						cats[#cats + 1] = "使用受保护Lua模块的模板"
						break
					end
				end
			end
		end
	end
	
	local frame = mw.getCurrentFrame()
	for i, cat in ipairs(cats) do
		TrackingCategory.append(frame,cat)
	end
end

return p