Modul:Yesno

Version vom 27. März 2018, 11:52 Uhr von ICON (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „-- Function allowing for consistent treatment of boolean-like wikitext input. -- It works similarly to the template {{yesno}}. return function (val, default)…“)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)

Das Modul bietet eine Schnittstelle zum Umgang mit boolschen Werten. Lua bietet die boolschen Werte true und false, der Wikicoade liefert allerdings nur Zeichenketten. Dieses Modul wandelt die übergebenen Zeichenketten in boolsche Werte um und berücksichtigt dabei auch verschiedene Schreibweisen.

Syntax

yesno(value, default)

value wird dabei getestet und nach true or false, and nil. Letzteres wird zurückgegeben, wenn nichts übergeben wird. Alles andere bekommt den bei default angegebenen Wert.

Usage

First, load the module. Note that it can only be loaded from other Lua modules, not from normal wiki pages. For normal wiki pages you can use {{yesno}} instead.

local yesno = require('Module:Yesno')
-- Das liefert immer true:
yesno('yes')
yesno('y')
yesno('j')
yesno('ja')
yesno('true')
yesno('1')
yesno(1)
yesno(true)

-- Das liefert immer false:
yesno('no')
yesno('nein')
yesno('n')
yesno('false')
yesno('0')
yesno(0)
yesno(false)

-- nil ergibt immer nil:
yesno(nil)

Zeichenketten werden immer erst in Kleinbuchstaben umgewandelt:

-- Dieses ergibt auch immer true:
yesno('Yes')
yesno('YES')
yesno('yEs')
yesno('Y')
yesno('tRuE')

-- UNd dieses auch immer false:
yesno('No')
yesno('NO')
yesno('nO')
yesno('N')
yesno('fALsE')

Du kannst einen Standardrückgabewert für unbekannte Werte angeben. Gibst du nichts an, ist der Wert immer nil.

-- Das ergibt nil:
yesno('foo')
yesno({})
yesno(5)
yesno(function() return 'This is a function.' end)

-- Das ergibt true:
yesno('foo', true)
yesno({}, true)
yesno(5, true)
yesno(function() return 'This is a function.' end, true)

-- Das ergibt nil "bar":
yesno('foo', 'bar')
yesno({}, 'bar')
yesno(5, 'bar')
yesno(function() return 'This is a function.' end, 'bar')

Leere Zeichenketten funktionieren wie normale Zeichenketten:

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

-- 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 == 'on'
		or tonumber(val) == 1
	then
		return true
	elseif val == false
		or val == 'no'
		or val == 'n'
		or val == 'false'
		or val == 'f'
		or val == 'off'
		or tonumber(val) == 0
	then
		return false
	else
		return default
	end
end