Мазмұнға өту

Module:Yesno

Уикикітап жобасынан


Бұл модуль логикалық немесе логикалық тәрізді кірістерді өңдеуге арналған бірыңғай интерфейсті ұсынады. Lua true және Үлгі:Luafalse логикалық мәндерін пайдалануға мүмкіндік береді, ал вики-белгілеу арқылы жазылған шаблондар көбінесе "иә" және "жоқ"сияқты белгілерді қолданады. Модуль ұқсас жолдарды түрлендіреді және Lua-да қолдануға жарамды логикалық мән береді. Сонымен қатар, қайтарылатын мән Үлгі:Luanil мүмкін. Lua-ның басқа құрылымдары, соның ішінде логикалық айнымалылар, сандар, кестелер және функциялар кіріс ретінде пайдаланылуы мүмкін. Сонымен қатар, әдепкі қайтару мәнін орнатуға болады.

= Синтаксис =

[өңдеу]
yesno(value, default)

value< / code — - тексерілетін мән. Логикалық және ұқсас кірістер әрқашан true немесе Үлгі:Luafalse, Үлгі:Luanil Үлгі:Luanil қайтарады. Қалған жағдайлар default< / code > сәйкес келеді.

= Пайдалану =

[өңдеу]

Бастау үшін модульді жүктеңіз. Мұны тек басқа модульдерден жасауға болатындығын ескеріңіз.

local yesno = require('Module:Yesno')

Кейбір мәндер әрқашан true, ал басқалары Үлгі:Luafalse қайтарады. Үлгі:Luanil әрқашан Үлгі:Luanil қайтарады.

-- Әрқашан шындықты қайтарыңыз:
yesno('yes')
yesno('y')
yesno('true')
yesno('t')
yesno ('иә')
yesno ('d')
yesno('+')
yesno('1')
yesno(1)
yesno(true)

-- Әрқашан жалған қайтарады:
yesno('no')
yesno('n')
yesno('false')
yesno('f')
yesno ('жоқ')
yesno ('N')
yesno('-')
yesno('0')
yesno(0)
yesno(false)

-- nil әрқашан nil қайтарады:
yesno(nil)

Жол мәндері төменгі регистрге алдын ала түрлендіріледі:

-- Әрқашан шындықты қайтарыңыз:
yesno('Yes')
yesno('YES')
yesno('yEs')
yesno('Y')
yesno('tRuE')

-- Әрқашан жалған қайтарады:
yesno('No')
yesno('NO')
yesno('nO')
yesno('N')
yesno('fALsE')

Егер yesno жоғарыда айтылғандардан өзгеше аргументті қабылдаса, сіз әдепкі мәнді орната аласыз. Егер ол орнатылмаған болса, олар үшін Үлгі:Luanil қайтарылады.

-- 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)

-- қайтару "бар":
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".

Викитекстегі бос жол Үлгі:Luafalse сәйкес келсе де, Луа оған true сәйкес келеді. Модуль де солай істейді. Сондықтан болдырмау үшін осындай қателіктер бос жолдар болуы тиіс отсеиваться қолдану осы модуль.< / includeonly>


-- 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 mw.ustring.lower(val) or val
	if val == nil then
		return nil
	elseif val == true 
		or val == 'yes' or val == 'иә'
		or val == 'y'
		or val == 'true' or val == 'дұрыс'
		or val == 't'
		or tonumber(val) == 1
	then
		return true
	elseif val == false
		or val == 'no' or val == 'жоқ'
		or val == 'n'
		or val == 'false' or val == 'қате'
		or val == 'f'
		or val == 'емес'
		or tonumber(val) == 0
	then
		return false
	else
		return default
	end
end