Модуль:RandomInProject
Внешний вид
Для документации этого модуля может быть создана страница Модуль:RandomInProject/doc
local p = {}
-- Функция перемешивания массива (Fisher-Yates shuffle)
local function shuffle(tbl)
math.randomseed(os.time()) -- Инициализация генератора случайных чисел
for i = #tbl, 2, -1 do
local j = math.random(i)
tbl[i], tbl[j] = tbl[j], tbl[i] -- Меняем местами элементы
end
end
function p.getRandomArticle(frame)
-- Получаем аргументы
local args = require('Модуль:Arguments').getArgs(frame)
local page = args.page
if not page then
return "Ошибка: не указана страница."
end
-- Загружаем содержимое указанной страницы
local content = frame:expandTemplate{ title = page }
if not content or content == "" then
return "Ошибка: не удалось получить содержимое страницы '" .. page .. "'."
end
-- Разделяем содержимое на секции по тегу <hr/>
local sections = mw.text.split(content, '<hr%s*/?>')
-- Проверяем, есть ли секции для выбора
if #sections == 0 then
return "Ошибка: на странице '" .. page .. "' не найдено разделов."
end
-- Перемешиваем список секций
shuffle(sections)
-- Выбираем первую секцию после перемешивания
local selectedSection = mw.text.trim(sections[1])
-- Возвращаем выбранную секцию
return selectedSection
end
return p