Модуль:CategorySator
Внешний вид
Для документации этого модуля может быть создана страница Модуль:CategorySator/doc
local p = {}
function p.Cat(frame)
-- Получаем исходный текст из параметров; если параметр не передан, то пустая строка.
local input = frame.args[1] or ""
-- Разбиваем строку на элементы по запятой.
local words = mw.text.split(input, ",")
local categories = {}
local originalLinks = {}
for i, word in ipairs(words) do
-- Убираем лишние пробелы.
local trimmed = mw.text.trim(word)
if trimmed ~= "" then
-- Формируем категорию для дальнейшего использования.
table.insert(categories, "[[Категория:" .. trimmed .. "]]")
-- Формируем ссылку для исходного текста.
table.insert(originalLinks, "[[:Категория:" .. trimmed .. "|" .. trimmed .. "]]")
end
end
-- Собираем исходный текст в виде списка ссылок, разделённых запятой и пробелом.
local originalTextFormatted = table.concat(originalLinks, ", ")
-- Собираем итоговый результат: сначала вывод исходного текста, затем каждая категория с новой строки.
local output = originalTextFormatted .. "\n" .. table.concat(categories, "\n")
return output
end
function p.Book(frame)
-- Получаем исходный текст из параметров; если параметр не передан, то пустая строка.
local input = frame.args[1] or ""
-- Разбиваем строку на элементы по запятой.
local words = mw.text.split(input, ",")
local categories = {}
for i, word in ipairs(words) do
-- Убираем лишние пробелы.
local trimmed = mw.text.trim(word)
if trimmed ~= "" then
-- Формируем категорию для дальнейшего использования.
table.insert(categories, "[[Категория:" .. trimmed .. "]]")
-- Формируем ссылку для исходного текста.
end
end
-- Собираем итоговый результат: сначала вывод исходного текста, затем каждая категория с новой строки.
local output = table.concat(categories, "\n")
return output
end
-- Функция для обрезки пробелов по краям строки
local function trim(s)
return (s:gsub("^%s*(.-)%s*$", "%1"))
end
-- Функция для преобразования первой буквы строки в заглавную
local function firstToUpper(s)
if s == "" then return "" end
return s:sub(1,1):upper() .. s:sub(2)
end
function p.main(frame)
local input = frame.args[1] or ""
local output = {}
-- Разбиваем строку по запятым
for token in string.gmatch(input, "[^,]+") do
local word = trim(token)
word = firstToUpper(word)
table.insert(output, string.format("[[:Категория:%s|%s]]", word, word))
end
return table.concat(output, ", <br/> ")
end
return p