پودمان:Lua banner: تفاوت میان نسخه‌ها

از ویکی حقوق
پرش به ناوبری پرش به جستجو
جز (۱ نسخه واردشده)
جز (۱ نسخه واردشده)
 
(یک نسخهٔ میانی ویرایش شده توسط یک کاربر دیگر نشان داده نشد)
خط ۱: خط ۱:
-- This module implements the {{lua}} template.
-- This module implements the {{lua}} template.
-- سطرهای ۳۷ تا ۴۰ این پودمان برای تغییر نام فضای نام از «Module» به «پودمان» تغییر کرده‌اند. در زمان به‌روزرسانی دقت کنید
local yesno = require('Module:Yesno')
local yesno = require('Module:Yesno')
local mList = require('Module:List')
local mList = require('Module:List')
خط ۲۹: خط ۳۱:
local boxArgs = {}
local boxArgs = {}
if #modules < 1 then
if #modules < 1 then
boxArgs.text = '<strong class="error">Error: no modules specified</strong>'
boxArgs.text = '<strong class="error">خطا: هیچ پودمانی مشخص نشده‌است</strong>'
else
else
local moduleLinks = {}
local moduleLinks = {}
for i, module in ipairs(modules) do
for i, module in ipairs(modules) do
-- replace "Module" namespace prefix with "پودمان"
if mw.ustring.find(module, '[Mm]odule', 1, false) then
module = mw.ustring.gsub(module, '[Mm]odule', 'پودمان', 1)
end
moduleLinks[i] = string.format('[[:%s]]', module)
moduleLinks[i] = string.format('[[:%s]]', module)
local maybeSandbox = mw.title.new(module .. '/sandbox')
local maybeSandbox = mw.title.new(module .. '/تمرین')
if maybeSandbox.exists then
if maybeSandbox.exists then
moduleLinks[i] = moduleLinks[i] .. string.format(' ([[:%s|sandbox]])', maybeSandbox.fullText)
moduleLinks[i] = moduleLinks[i] .. string.format(' ([[:%s|تمرین]])', maybeSandbox.fullText)
end
end
end
end
local moduleList = mList.makeList('bulleted', moduleLinks)
local moduleList = mList.makeList('bulleted', moduleLinks)
local title = mw.title.getCurrentTitle()
local title = mw.title.getCurrentTitle()
if title.subpageText == "doc" then
if title.subpageText == "doc" or title.subpageText == "توضیحات" then
title = title.basePageTitle
title = title.basePageTitle
end
end
if title.contentModel == "Scribunto" then
if title.contentModel == "Scribunto" then
boxArgs.text = 'This module depends on the following other modules:' .. moduleList
boxArgs.text = 'این پودمان از پودمان‌های زیر استفاده می‌کند:' .. moduleList
else
else
boxArgs.text = 'This template  uses [[Wikipedia:Lua|Lua]]:\n' .. moduleList
boxArgs.text = 'این الگو از [[ویکی‌پدیا:لوآ|لوآ]] استفاده می‌کند:\n' .. moduleList
end
end
end
end
boxArgs.type = 'notice'
boxArgs.type = 'notice'
boxArgs.small = true
boxArgs.small = true
boxArgs.image = '[[File:Lua-Logo.svg|30px|alt=|link=]]'
boxArgs.image = '[[پرونده:Lua-logo-nolabel.svg|30px|جایگزین=نماد لوآ|پیوند=ویکی‌پدیا:لوآ]]'
return mMessageBox.main('mbox', boxArgs)
return mMessageBox.main('mbox', boxArgs)
end
end
خط ۶۵: خط ۷۲:
-- Error category
-- Error category
if #modules < 1 then
if #modules < 1 then
cats[#cats + 1] = 'Lua templates with errors'
cats[#cats + 1] = 'الگو:لوآ همراه خطا'
end
end


خط ۷۴: خط ۸۱:
sandbox = true,
sandbox = true,
sandbox2 = true,
sandbox2 = true,
testcases = true
testcases = true,
['توضیحات'] = true,
['تمرین'] = true,
['آزمایشی'] = true,
}
}
if not subpageBlacklist[titleObj.subpageText] then
local subPageName = subpageBlacklist[titleObj.subpageText]
if not subPageName then
local protCatName
local protCatName
if titleObj.namespace == 10 then
if titleObj.namespace == 10 then
خط ۸۲: خط ۹۳:
if not category then
if not category then
local categories = {
local categories = {
['Module:String'] = 'Templates based on the String Lua module',
['Module:String'] = 'الگو:مبتنی بر لوآ رشته',
['Module:Math'] = 'Templates based on the Math Lua module',
['Module:Math'] = 'الگو:مبتنی بر لوآ ریاضی',
['Module:BaseConvert'] = 'Templates based on the BaseConvert Lua module',
['Module:BaseConvert'] = 'الگو:مبتنی بر لوآ تبدیل مبنا',
['Module:Citation'] = 'Templates based on the Citation/CS1 Lua module'
['Module:Citation'] = 'الگو:ارجاع‌دهی مبتنی بر لوآ'
}
}
categories['Module:Citation/CS1'] = categories['Module:Citation']
categories['Module:Citation/CS1'] = categories['Module:Citation']
category = modules[1] and categories[modules[1]]
category = modules[1] and categories[modules[1]]
category = category or 'Lua-based templates'
category = category or 'الگو:مبتنی بر لوآ'
end
end
cats[#cats + 1] = category
cats[#cats + 1] = category
protCatName = "Templates using under-protected Lua modules"
protCatName = "الگو:مبتنی بر لوآ با سطح محافظت پایین‌تر"
elseif titleObj.namespace == 828 then
elseif titleObj.namespace == 828 then
protCatName = "Modules depending on under-protected modules"
protCatName = "پودمان‌های وابسته به پودمان‌های دیگر با سطح محافظت پایین‌تر"
end
end
if not args.noprotcat and protCatName then
if not args.noprotcat and protCatName then
خط ۱۲۲: خط ۱۳۳:
end
end
for i, cat in ipairs(cats) do
for i, cat in ipairs(cats) do
cats[i] = string.format('[[Category:%s]]', cat)
cats[i] = string.format('[[رده:%s]]', cat)
end
end
return table.concat(cats)
return table.concat(cats)

نسخهٔ کنونی تا ‏۲۵ فوریهٔ ۲۰۲۳، ساعت ۰۰:۲۶

توضیحات این پودمان می‌تواند در پودمان:Lua banner/توضیحات قرار گیرد.

-- This module implements the {{lua}} template.
-- سطرهای ۳۷ تا ۴۰ این پودمان برای تغییر نام فضای نام از «Module» به «پودمان» تغییر کرده‌اند. در زمان به‌روزرسانی دقت کنید

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

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(args)
end

function p._main(args)
	local modules = mTableTools.compressSparseArray(args)
	local box = p.renderBox(modules)
	local trackingCategories = p.renderTrackingCategories(args, modules)
	return box .. trackingCategories
end

function p.renderBox(modules)
	local boxArgs = {}
	if #modules < 1 then
		boxArgs.text = '<strong class="error">خطا: هیچ پودمانی مشخص نشده‌است</strong>'
	else
		local moduleLinks = {}
		for i, module in ipairs(modules) do
			-- replace "Module" namespace prefix with "پودمان"
			if mw.ustring.find(module, '[Mm]odule', 1, false) then
				module = mw.ustring.gsub(module, '[Mm]odule', 'پودمان', 1)
			end
			
			moduleLinks[i] = string.format('[[:%s]]', module)
			local maybeSandbox = mw.title.new(module .. '/تمرین')
			if maybeSandbox.exists then
				moduleLinks[i] = moduleLinks[i] .. string.format(' ([[:%s|تمرین]])', maybeSandbox.fullText)
			end
		end
		local moduleList = mList.makeList('bulleted', moduleLinks)
		local title = mw.title.getCurrentTitle()
		if title.subpageText == "doc" or title.subpageText == "توضیحات" then
			title = title.basePageTitle
		end
		if title.contentModel == "Scribunto" then
			boxArgs.text = 'این پودمان از پودمان‌های زیر استفاده می‌کند:' .. moduleList
		else
			boxArgs.text = 'این الگو از [[ویکی‌پدیا:لوآ|لوآ]] استفاده می‌کند:\n' .. moduleList
		end
	end
	boxArgs.type = 'notice'
	boxArgs.small = true
	boxArgs.image = '[[پرونده:Lua-logo-nolabel.svg|30px|جایگزین=نماد لوآ|پیوند=ویکی‌پدیا:لوآ]]'
	return mMessageBox.main('mbox', boxArgs)
end

function p.renderTrackingCategories(args, modules, titleObj)
	if yesno(args.nocat) then
		return ''
	end

	local cats = {}

	-- Error category
	if #modules < 1 then
		cats[#cats + 1] = 'الگو:لوآ همراه خطا'
	end

	-- Lua templates category
	titleObj = titleObj or mw.title.getCurrentTitle()
	local subpageBlacklist = {
		doc = true,
		sandbox = true,
		sandbox2 = true,
		testcases = true,
		['توضیحات'] = true,
		['تمرین'] = true,
		['آزمایشی'] = true,
	}
	local subPageName = subpageBlacklist[titleObj.subpageText]
	if not subPageName then
		local protCatName
		if titleObj.namespace == 10 then
			local category = args.category
			if not category then
				local categories = {
					['Module:String'] = 'الگو:مبتنی بر لوآ رشته',
					['Module:Math'] = 'الگو:مبتنی بر لوآ ریاضی',
					['Module:BaseConvert'] = 'الگو:مبتنی بر لوآ تبدیل مبنا',
					['Module:Citation'] = 'الگو:ارجاع‌دهی مبتنی بر لوآ'
				}
				categories['Module:Citation/CS1'] = categories['Module:Citation']
				category = modules[1] and categories[modules[1]]
				category = category or 'الگو:مبتنی بر لوآ'
			end	
			cats[#cats + 1] = category
			protCatName = "الگو:مبتنی بر لوآ با سطح محافظت پایین‌تر"
		elseif titleObj.namespace == 828 then
			protCatName = "پودمان‌های وابسته به پودمان‌های دیگر با سطح محافظت پایین‌تر"
		end
		if not args.noprotcat and protCatName then
			local protLevels = {
				autoconfirmed = 1,
				extendedconfirmed = 2,
				templateeditor = 3,
				sysop = 4
			}
			local currentProt
			if titleObj.id ~= 0 then
				-- id is 0 (page does not exist) if am previewing before creating a template.
				currentProt = titleObj.protectionLevels["edit"][1]
			end
			if currentProt == nil then currentProt = 0 else currentProt = protLevels[currentProt] end
			for i, module in ipairs(modules) do
				if module ~= "WP:libraryUtil" 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] = protCatName
						break
					end
				end
			end
		end
	end
	for i, cat in ipairs(cats) do
		cats[i] = string.format('[[رده:%s]]', cat)
	end
	return table.concat(cats)
end

return p