Перейти к содержанию

Модуль:cat-utils

Эта страница бессрочно защищена от изменения
Материал из Викисловаря
Документация

Модуль предназначен для формирования категорий. Этот модуль используется в шаблоне {{Категория}}.

Описание функций и параметров

  • categorize — функция формирования категорий.
    Принимает неограниченное количество неименованных параметров вызывающего шаблона, которые могут иметь значения:
    1. неименованный — строка названия категорий
    2. lang или язык — буквенный код языка (ru, en, fr и т.п.);
    3. sort или ключ_сортировкиключ сортировки категории.
    Функция проверяет пространство имен страницы. На данный момент разрешено вызов в статьях и категориях.
    Вызов {{#invoke:cat-utils|categorize}}
local p = {}

function p.format_categories(categories, langcode, sort_key)
	local out_categories = {}
	for key, cat in ipairs(categories) do
		out_categories[key] = "[[Категория:" .. cat .. 
			(langcode and "/" .. langcode or "") ..
			(sort_key and "|" .. sort_key or "") .. "]]"  
	end
	
	return table.concat(out_categories, "")
end

-- Used by {{Категория}}
function p.categorize(frame)
    local NAMESPACE = mw.title.getCurrentTitle().nsText
    if (NAMESPACE ~= '') and (NAMESPACE ~= 'Категория') then
    	return ''	
    end
    
	local args = frame:getParent().args
	local langcode = args['язык'] or args['lang']
	if langcode == "" then 
		langcode = nil 
	end
	local sort_key = args["ключ_сортировки"] or args["sort"]; 
	if sort_key == "" then 
		sort_key = nil 
	end
	local i = 1
	local cat = args[1]
	local categories = {}
	while cat do
		if cat ~= "" then
			table.insert(categories, cat)
		end
		i = i + 1
		cat = args[i]
	end
	if table.getn(categories) == 0 then
		table.insert(categories, 'Требуется категоризация')
		sort_key = nil
	end
	return p.format_categories(categories, langcode, sort_key)
end


return p