Этот модуль предоставляет согласованный интерфейс для обработки строкового ввода логического или логического стиля. В то время как Lua позволяет с true
и false
логическими значениями, шаблоны могут выразить вики - только логические значения через такие строки, как «да», «нет» и т.д. Этот модуль обрабатывает эти виды строк и превращают их в булевой вход для Lua для процесса. Он также возвращает nil
значения как nil
, чтобы учесть различия между nil
и false
. Модуль также принимает в качестве входных данных другие структуры Lua, то есть логические значения, числа, таблицы и функции. Если ему передается ввод, который он не распознает как логическое или nil
, можно указать значение по умолчанию для возврата.
Синтаксис
да нет ( значение , по умолчанию )
value
- это значение, которое нужно проверить. Логический ввод или ввод логического стиля (см. Ниже) всегда оценивается как true
или false
, и nil
всегда оценивается как nil
. Другие значения оцениваются в default
.
Применение
Сначала загрузите модуль. Обратите внимание, что он может быть загружен только из других модулей Lua, а не из обычных вики-страниц. Для обычных вики-страниц вы можете использовать вместо этого {{ yesno }}.
local yesno = require ( 'Модуль: Да нет' )
Некоторые входные значения всегда возвращаются true
, а некоторые всегда возвращаются false
. nil
значения всегда возвращаются nil
.
- Они всегда возвращают истину: да нет ( 'да' ) да нет ( 'у' ) да нет ( 'истина' ) да нет ( 'т' ) да нет ( '1' ) да нет ( 1 ) да нет ( правда )- Они всегда возвращают ложь: да нет ( 'нет' ) да нет ( 'н' ) да нет ( 'ложь' ) да нет ( 'f' ) да нет ( '0' ) да нет ( 0 ) да нет ( ложь )- Значение nil всегда возвращает nil: yesno ( ноль )
Перед сопоставлением строковые значения преобразуются в нижний регистр:
- Они всегда возвращают истину: yesno ( 'Yes' ) yesno ( 'YES' ) yesno ( 'yEs' ) yesno ( 'Y' ) yesno ( 'tRuE' )- Они всегда возвращают ложь: да нет ( 'Нет' ) да нет ( 'НЕТ' ) да нет ( 'нет' ) да нет ( 'Н' ) да нет ( 'ложь' )
Вы можете указать значение по умолчанию, если yesno получает ввод, отличный от указанного выше. Если вы не укажете значение по умолчанию, модуль вернется nil
для этих входов.
- Они возвращают ноль: yesno ( 'foo' ) yesno ({}) yesno ( 5 ) yesno ( function () return 'This is a function.' End )- Они возвращают true: yesno ( 'foo' , true ) yesno ({}, true ) yesno ( 5 , true ) yesno ( function () return 'Это функция.' End , true )- Они возвращают "bar": yesno ( 'foo' , 'bar' ) yesno ({}, 'bar' ) yesno ( 5 , 'bar' ) yesno ( function () return 'Это функция.' End , 'бар' )
Обратите внимание, что пустая строка также работает следующим образом:
yesno ( '' ) - возвращает ноль. yesno ( '' , true ) - возвращает true. yesno ( '' , 'bar' ) - возвращает "bar".
Хотя пустая строка обычно оценивается как ложь в вики-тексте, она оценивается как истинная в Lua. Этот модуль предпочитает поведение Lua поведению вики-текста. Если для вашего модуля важна обработка пустой строки как false, вам нужно будет преобразовать пустые строки в значение, которое оценивается как false, прежде чем передавать их в этот модуль. В случае аргументов, полученных от викитекста, это можно сделать с помощью Module: Arguments .
- Функция, позволяющая последовательно обрабатывать логический ввод вики-текста.- Работает аналогично шаблону {{yesno}}. функция возврата ( val , по умолчанию )- Если в вашей вики для любого из «да», «нет» и т. Д. Используются символы, отличные от ascii, вы- следует заменить "val: lower ()" на "mw.ustring.lower (val)" в- следующая строка.val = type ( val ) == 'строка' и val : lower () или valесли val == nil, товернуть нольelseif val == true или val == 'да'или val == 'y'или val == 'true'или val == 't'или val == 'on'или tonumber ( val ) == 1тогдавернуть истинуelseif val == falseили val == 'нет'или val == 'n'или val == 'false'или val == 'f'или val == 'off'или tonumber ( val ) == 0тогдавернуть ложьещевернуть по умолчаниюконецконец