(i) Дакументацыя

Модуль падае адзіны інтэрфейс для апрацоўкі булевых або булевападобных уваходных даных. 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')

Калі yes no прымае аргумент выдатны ад пералічаных вышэй, вы можаце задаць прадвызначанае значэнне. Калі яно не зададзена, для іх будзе вяртацца 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('') -- вяртае nil.
yesno('', true) -- вяртае true.
yesno('', 'bar') -- вяртае «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 val == 'x'
                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