Jump to content

Модул:Yesno

Мавод аз Википедиа — донишномаи озод

Данный модуль предоставляет единый интерфейс для обработки булевых или булевоподобных входных данных. Lua позволяет использовать логические значения true и false, в то время как шаблоны, написанные с помощью вики-разметки, часто используют обозначения подобные «yes» и «no». Модуль преобразует подобные строки и выдаёт булевскую величину, пригодную для использования в Lua. Кроме того возможно возвращаемое значение nil. В качестве входных данных могут использоваться другие структуры Lua, в том числе булевы переменные, числа, таблицы и функции. Кроме того можно задать возвращаемое значение по умолчанию.

Синтаксис

[вироиши манбаъ]
yesno(value, default)

value — проверяемая величина. Булевские и им подобные входные данные всегда приводят к true или false, nil возвращает nil. Остальным случаям соответствует default.

Для начала, загрузите модуль. Обратите внимание, что это можно сделать только из других модулей.

local yesno = require('Module:Yesno')

Некоторые значения всегда возвращают true, некоторые другие — false. nil всегда возвращает nil.

-- Всегда возвращают true:
yesno('yes')
yesno('y')
yesno('true')
yesno('t')
yesno('да')
yesno('д')
yesno('+')
yesno('1')
yesno(1)
yesno(true)

-- Всегда возвращают false:
yesno('no')
yesno('n')
yesno('false')
yesno('f')
yesno('нет')
yesno('н')
yesno('-')
yesno('0')
yesno(0)
yesno(false)

-- nil всегда возвращает nil:
yesno(nil)

Строковые значения предварительно преобразуются к нижнему регистру:

-- Всегда возвращают true:
yesno('Yes')
yesno('YES')
yesno('yEs')
yesno('Y')
yesno('tRuE')

-- Всегда возвращают false:
yesno('No')
yesno('NO')
yesno('nO')
yesno('N')
yesno('fALsE')

Если yesno принимает аргумент отличный от перечисленных выше, вы можете задать значение по умолчанию. Если оно не задано, для них будет возвращаться nil.

-- возвращают 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 'This is a function.' end, true)

-- возвращают "bar":
yesno('foo', 'bar')
yesno({}, 'bar')
yesno(5, 'bar')
yesno(function() return 'This is a function.' end, 'bar')

Обратите внимание на поведение при передаче пустой строки:

yesno('')        -- Returns nil.
yesno('', true)  -- Returns true.
yesno('', 'bar') -- Returns "bar".

Хотя пустая строка в викитексте соответствует false, Lua ставит ей в соответствие true. Так же поступает и модуль. Поэтому для избежания подобных ошибок пустые строки должны отсеиваться до применения данного модуля.


-- Function allowing for consistent treatment of boolean-like wikitext input.
-- It works similarly to the template {{yesno}}.

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
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy