Modul:Yesno
Dieses Modul wird auf vielen Seiten benutzt, und Änderungen werden projektweit sofort wahrgenommen. Bitte teste Änderungen vorher im /Sandkasten oder in deinem Benutzernamensraum. Die getestete Änderung sollte dann in einem einzigen Edit auf dieser Seite eingefügt werden. Bitte diskutiere Änderungen zuerst auf der Diskussionsseite bevor du sie implementierst. |
Dieses Modul ist getestet und für den projektweiten Gebrauch geeignet. Es kann in Vorlagen benutzt und auf Hilfeseiten erläutert werden. Entwicklungen an dem Modul sollten auf Yesno/Test und die Anwendung auf der Spielwiese getestet werden, da wiederholte Trial-and-Error-Edits die Resourcen stark belasten können. |
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".
Verwendung in anderen Modulen
Dieses Modul ist notwendig für die Ausführung folgender Module. Bei Anpassungen sollte die Funktionstüchtigkeit der folgenden Module geprüft werden. Benutze dazu auch diese Tracking-Kategorie um Fehler zu finden, die sich dann auf Artikel auswirken:
- Category handler • Citation • LinkISBN • Mapframe • Message box • Quickbar Ort • Quickbar Position • Quickbar Region • Scroll Gallery • TemplateData
- Modul benötigt das Modul Yesno – Wartungskategorie, in der nochmals alle Module gelistet sind, die von diesem Modul abhängig sind.
- Die obige Dokumentation wurde aus der Seite Modul:Yesno/Doku eingefügt. (bearbeiten | Versionsgeschichte) Die Kategorien für dieses Modul sollten in der Dokumentation eingetragen werden. Die Interwiki-Links sollten auf Wikidata eingepflegt werden.
- Liste der Unterseiten
-- 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 == 'wahr'
or val == 'ja'
or val == 'j'
or tonumber(val) == 1
then
return true
elseif val == false
or val == 'no'
or val == 'n'
or val == 'false'
or val == 'falsch'
or val == 'nein'
or tonumber(val) == 0
then
return false
else
return default
end
end