Модуль:Yesno

З пляцоўкі Вікіпедыя
Jump to navigation Jump to search
(i) Дакументацыя

Дадзены модуль падае адзіны інтэрфейс для апрацоўкі булева або булевападобных ўваходных дадзеных. Lua дазваляе выкарыстоўваць лагічныя значэння true b 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('1')
yesno(1)
yesno(true)

-- Заўсёды вяртаюць false:
yesno('no')
yesno('n')
yesno('false')
yesno('f')
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('') -- 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 == '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 tonumber(val) == 0
	then
		return false
	else
		return default
	end
end