Модуль:Yesno
Module:Yesno - вспомогательный Lua-модуль, широко используемый в русскоязычной и других языковых версиях Википедии для обработки логических значений в шаблонах. Этот модуль предназначен для упрощения работы с логическими значениями (да/нет) и помогает корректно обрабатывать различные формы ввода, такие как «да», «нет», «yes», «no», «y», «n», а также их числовые и локализованные эквиваленты.
Цель Модуля — предоставить простой и единообразный способ проверки значений параметров, принимающих ответ «да» или «нет». Этот модуль позволяет разработчикам шаблонов обрабатывать различные значения, которые могут быть введены пользователями, и приводит их к стандартному логическому представлению, используемому в шаблоне.
Основные возможности[править]
Обработка разных форматов ввода — Модуль распознаёт как текстовые, так и числовые значения:
Текстовые значения: «да», «нет», «yes», «no», «y», «n» и их локализованные версии. Числовые значения: 1 (истина), 0 (ложь).
Универсальность — Поддержка разных языков и форматирования благодаря учёту локализованных версий ответов.
Пользовательские значения по умолчанию — Возможность задавать значения по умолчанию, которые будут возвращаться в случае некорректного ввода.
Пример использования[править]
local yesno = require('Модуль:Yesno') local result = yesno(args['параметр'], 'по умолчанию')
return function (val, default) -- If your wiki uses non-ascii characters for any of "yes", "no", etc., you -- should replace "val:lower()" with "mw.ustring.lower(val)" in the -- following line. val = type(val) == 'string' and val:lower() or val if val == nil then return nil elseif val == true or val == 'yes' or val == 'y' or val == 'true' or val == 't' or val == 'да' or val == 'д'
or val == '+'
or tonumber(val) == 1 then return true elseif val == false or val == 'no' or val == 'n' or val == 'false' or val == 'f' or val == 'нет' or val == 'н' or val == '-' or tonumber(val) == 0 then return false else return default end end