FANDOM


-- Цей модуль забезпечує роботу шаблону {{lua}}.
 
local yesno = require('Модуль:Yesno')
local mList = require('Модуль:List')
local mTableTools = require('Модуль:TableTools')
local mMessageBox = require('Модуль: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
			moduleLinks[i] = string.format('[[:%s]]', module)
		end
		local moduleList = mList.makeList('bulleted', moduleLinks)
		boxArgs.text = 'Використання [[Lua]]:\n' .. moduleList
	end
	boxArgs.type = 'notice'
	boxArgs.small = true
	boxArgs.image = '[[Файл:Lua-logo-nolabel.svg|30px|alt=Лого Lua|link=Вікіпедія:Lua]]'
	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-шаблонів
	titleObj = titleObj or mw.title.getCurrentTitle()
	local subpageBlacklist = {
		doc = true,
		sandbox = true,
		sandbox2 = true,
		testcases = true,
		['документація'] = true,
		['Документація'] = true,
		['пісочниця'] = true,
		['тести'] = true,
		['чернетка'] = true
	}
	if titleObj.namespace == 10 
		and not subpageBlacklist[titleObj.subpageText]
	then
		local category = args.category
		if not category then
			local categories = {
				['Модуль:String'] = 'Шаблони, засновані на модулі String',
				['Module:String'] = 'Шаблони, засновані на модулі String',
				['Модуль:Math'] = 'Шаблони, засновані на модулі Math',
				['Module:Math'] = 'Шаблони, засновані на модулі Math',
				['Модуль:BaseConvert'] = 'Шаблони, засновані на модулі BaseConvert',
				['Module:BaseConvert'] = 'Шаблони, засновані на модулі BaseConvert',
				['Модуль:Citation'] = 'Шаблони, засновані на модулі Citation',
				['Module:Citation'] = 'Шаблони, засновані на модулі Citation',
				['Модуль:Wikidata'] = 'Шаблони, які використовують Вікідані',
				['Module:Wikidata'] = 'Шаблони, які використовують Вікідані'
			}
			categories['Модуль:Citation/CS1'] = categories['Модуль:Citation']
			category = modules[1] and categories[modules[1]]
			category = category or 'Шаблони, які використовують модулі Lua'
		end
		cats[#cats + 1] = category
	end
 
	for i, cat in ipairs(cats) do
		cats[i] = string.format('[[Категорія:%s]]', cat)
	end
	return table.concat(cats)
end
 
return p

Ad blocker interference detected!


Wikia is a free-to-use site that makes money from advertising. We have a modified experience for viewers using ad blockers

Wikia is not accessible if you’ve made further modifications. Remove the custom ad blocker rule(s) and the page will load as expected.

Відвідайте інші вікіпроекти на Вікія!

Випадкова вікі