Wikiup:Lua/Modul/Expr/de
Vorlagenprogrammierung | Diskussionen | Lua | Test | Unterseiten | |||
Modul | Deutsch | English
|
Modul: | Dokumentation |
Expr
– Modul mit Funktionen für Ausdrücke in Ergänzung zu den von der Parser-Funktion #expr
gebotenen Möglichkeiten.
Die Funktionsergebnisse sind dafür vorgesehen, als Terme innerhalb anderer Berechnungen verwendet zu werden. Sie haben deshalb keine Möglichkeit, Fehlersituationen über Meldungen oder Wartungskategorien zu kommunizieren.
Funktionen für Vorlagen
Die Standard-Funktionen richten sich an #invoke
und dessen Parameter. Whitespace (etwa Leerzeichen oder Zeilenumbrüche) vor und nach den Werten wird ignoriert.
- average
- Durchschnitt berechnen
- 1 – Erste Zahl
- 2 – Zweite Zahl
- parse – (optional) Zahlenformat der Eingaben
- 3 – (optional) Weitere Zahl
- 4 usw. – (optional) Weitere Zahlen, beliebig viele
- Der Durchschnitt ist immer mindestens
0
und ungültige Werte werden ignoriert. - base62
- Kodierung und Dekodierung gemäß Base62.
- 1 – zu verarbeitender Wert
- 2 – (optional)
D2B
für Dezimal-in-Base62; Vorgabe: Base62-in-Dezimal
- crossTotal
- Quersumme berechnen
- 1 – Positive ganze Zahl, nur Ziffern (Minuszeichen und Nachkommastellen würden ignoriert)
0
wenn ungültig.- decimal2minsec
- Koordinatenwert von Dezimaldarstellung in Grad-Minuten-Sekunden umrechnen
- 1 – Dezimalzahl
- 2 – (optional) Anzahl der Nachkommastellen der Sekunden (Vorgabe: keine)
- parse – (optional) Zahlenformat der Dezimalzahl
- Ergebnis: Umbruchgeschütztes
<span>
-Element mit Grad, Minuten, Sekunden, sonst0
- figure
- Zahl auf Gültigkeit prüfen und ggf. konvertieren
- 1 – Zahl
- parse – (optional) Zahlenformat
- expr – (optional)
1
– Berechnungs-Ausdruck zulassen nach den Regeln der Parserfunktion#expr
- set – (optional) Zahlenbereich; Bedingung muss erfüllt sein
R
– (Vorgabe) Reelle Zahl (also beliebig)R+
– Zahl größer oder gleich Null; also nicht-negativR-
– Zahl kleiner oder gleich Null; also nicht-positivZ
– Ganze Zahl (wertmäßig)N
– Natürliche Zahl einschließlich Null; also nicht-negativZ+
– identischN
Z-
– Ganze Zahl kleiner oder gleich Null; also nicht-positiv
- nichts falls ungültig
- max
- Maximum einer Menge von Zahlen ermitteln.
- Alle unbenannten Parameter werden zur Berechnung herangezogen.
- Parameterwerte können leer sein oder Ausdrücke enthalten, die sich mit
#expr
auswerten lassen. - Es wird sowohl das übliche Minus-Ersatzzeichen Bindestrich-Minus (U+002D) wie auch das typografische Minuszeichen (U+2212) akzeptiert (siehe unten).
- Optionen sind in benannten Parametern möglich:
- Parameterwerte können leer sein oder Ausdrücke enthalten, die sich mit
- Der Rückgabewert ist eine leere Zeichenkette („nichts“), wenn kein Parameterwert oder nur leere Werte angegeben wurden; auch eine Fehlermeldung für ungültige
#expr
kann auftreten. Ansonsten die ermittelte Zahl in der spezifizierten Darstellung. - min
- Minimum ermitteln; ansonsten genau analog max.
- minsec2decimal
- Koordinatenwert von Grad-Minuten-Sekunden in Dezimaldarstellung umrechnen
- 1 – Grad
- 2 – (optional) Minuten
- 3 – (optional) Sekunden
- 4 – (optional) Buchstabe für Himmelsrichtung
- parse – (optional) Zahlenformat der Eingaben
0
wenn ungültig.- modulo
- Modulo
- 1 – Zahlenwert (Dividend)
- 2 – Ganzwert (Basis, Divisor, Bezugswert) Null unzulässig
- 3 – (optional) Zahlenformat der Eingaben
0
wenn ungültig.- percent
- Prozentsatz aus Prozentwert und Grundwert berechnen
- 1 – Anteil
- 2 – Grundwert (Basis, Bezugswert, 100 %) Null unzulässig
- 3 – (optional) Zahl der Nachkommastellen (Vorgabe: keine)
- 4 – (optional) schließende Nullen in den Nachkommastellen beibehalten
- parse – (optional) Zahlenformat der Eingaben
- low – (optional) Ergebnis-Format,
1
für „Computer-Format“ (Vorgabe: lokales Wiki).
- Das Ergebnis schließt mit einem
%
ab und der Zahlenwert kann deshalb nicht selbst formatiert werden. 0
wenn ungültig.- Ramanujan
- random
- (Pseudo-)Zufallszahl (ganzzahlig)
- 1 – (optional) Basis, Normierung, Anzahl der Werte (Vorgabe:
100
), ganzzahlig >1.
- 1 – (optional) Basis, Normierung, Anzahl der Werte (Vorgabe:
- Ergebnisse sind ganzzahlig, beginnend bei einschließlich Null, größter Wert eins weniger als Anzahl.
- Jede Einbindung in der Seite liefert ein unabhängiges und deshalb meist unterschiedliches Ergebnis. Bei drei möglichen Werten und vier Einbindungen werden Wiederholungen allerdings unvermeidlich sein.
- seed-Werte zur Sicherstellung unterschiedlicher Werte innerhalb der Seite sind nicht erforderlich.
- sum
- Summe berechnen
- 1 – Erste Zahl
- 2 – Zweite Zahl
- parse – (optional) Zahlenformat der Eingaben
- 3 – (optional) Weitere Zahl
- 4 usw. – (optional) Weitere Zahlen, beliebig viele
- Die Summe ist immer mindestens
0
und ungültige Werte werden ignoriert. - failsafe
- Versionsmanagement
{{Wikipedia:Lua/Modul-Failsafe|Modul=Expr}}
Direkteinbindung in Vorlagen
- TemplateAverage
- Wie average, jedoch alle Parameter der umgebenden Vorlage verwenden.
- TemplateBooland
1
, wenn alle Parameter „etwas“ sind, sonst „nichts“.- Parameter der umgebenden Vorlage verwenden.
- TemplateBoolor
1
, wenn ein Parameter „etwas“ ist, sonst „nichts“.- Parameter der umgebenden Vorlage verwenden.
- TemplateMax
- Wie max, jedoch speziell für Vorlage:Max – alle Parameter der umgebenden Vorlage verwenden.
- TemplateMin
- Wie min, jedoch speziell für Vorlage:Min – alle Parameter der umgebenden Vorlage verwenden.
- TemplateSum
- Wie sum, jedoch alle Parameter der umgebenden Vorlage verwenden.
Unicode-Minuszeichen
In den Eingabewerten kann sowohl das ASCII-Zeichen -
auf der Tastatur (U+002D) als auch das typografische Minuszeichen − (U+2212) verwendet werden. Mit dem Minuszeichen wird wie folgt verfahren:
- Enthält einer der Eingabewerte ein Unicode-Minus U+2212, wird dies auch im Ergebnis benutzt.
- Option
minus=1
Ergebnis immer mit Unicode-Minus darstellen.[2] - Option
minus=-
Ergebnis immer mit ASCII-Bindestrich-Minus darstellen.
Ein Ergebnis mit Unicode-Minuszeichen ist zwangsläufig immer eine Zeichenkette.
Zahlenformat der Eingabe
{{#lst:Modul:Expr/Doku|parseSpec}}
Beispiele (Testseite)
Eine Testseite illustriert praktische Beispiele.
Funktionen für Lua-Module
Viele der oben dokumentierten Funktionen können auch über require()
in andere Module eingebunden werden:
local lucky, Expr = pcall( require, "Module:Expr" )
if type( Expr ) == "table" then
Expr = Expr()
else
-- Fehlerfall; Expr enthält Fehlermeldung
return "<span class='error'>" .. Expr .. "</span>"
end
Danach steht zur Verfügung:
- Expr.average( array, ask )
-
array
– sequence table, mit string oder numberask
– Zahlenformat der Eingaben
- Ergebnis: number, mindestens
0
- Expr.base62( adjust )
-
adjust
– string oder number- number – kodiere in base62 (string)
- string – dekodiere in number
- Expr.crossTotal( amount )
-
amount
– string oder number
- Ergebnis: number, mit Quersumme des positiven ganzzahligen Teils, mindestens
0
- Expr.decimal2minsec( amount, align, ask )
-
amount
– Dezimalzahl, string oder numberalign
– Anzahl der Nachkommastellen der Sekunden, string oder number (Vorgabe:0
)ask
– Zahlenformat der Dezimalzahl
- Ergebnis: mw.html-Objekt im Erfolgsfall, string
0
sonst - Expr.figure( amount, ask, advance, area )
-
amount
– Zahl, string oder numberask
– Zahlenformatadvance
– true: Ausdrückearea
– Zahlenbereich
- Ergebnis: number, oder
false
wenn ungültig - Expr.minsec2decimal( aDeg, aMin, aSec, alter, ask )
-
aDeg
– Gradzahl, string oder numberaMin
– Minutenzahl, string oder number oder nichtsaSec
– Sekundenzahl, string oder number oder nichtsalter
– Buchstabe für Himmelsrichtung, oder nichtsask
– Zahlenformat der Eingaben
- Ergebnis: number,
0
wenn ungültig - Expr.modulo( amount, adjust, ask )
-
amount
– Zahl, string oder numberadjust
– Basis, string oder numberask
– Zahlenformat der Eingaben
- Ergebnis: number,
0
wenn ungültig - Expr.percent( amount, all, align, after, ask, allow, frame )
-
amount
– Anteil, string oder numberall
– Basis (Bezugswert), string oder numberalign
– Zahl der Nachkommastellen, string oder number (Vorgabe: keine)after
–true
, um schließende Nullen in den Nachkommastellen beizubehaltenask
– Zahlenformat der Eingabenallow
– Ergebnis-Format,true
, für „Computer-Format“ (Vorgabe: lokales Wiki).frame
– Objekt, falls zur Hand
- Das Ergebnis schließt mit einem
%
ab und der Zahlenwert kann deshalb nicht selbst formatiert werden. - number
0
wenn ungültig - Expr.sum( array, ask )
-
array
– sequence table, mit string oder numberask
– Zahlenformat der Eingaben
- Zwei Ergebnisse:
- number, mit Summe, mindestens
0
- number, mit Anzahl gültiger Summanden, mindestens
0
- number, mit Summe, mindestens
- Expr.failsafe( atleast )
- (wie oben)
Als Rückgabewerte kommen number, Zeichenketten oder false
in Frage.
Verwendung
Allgemeine Bibliothek; nicht eingegrenzt.
- Vorlage:%
- Vorlage:booland
- Vorlage:boolor
- Vorlage:Dezimalgrad
- Vorlage:Grad
- Vorlage:max
- Vorlage:min
- Vorlage:modulo
- Vorlage:NurWennZahl
- Vorlage:Quersumme
- Vorlage:Zufallszahl
Abhängigkeiten
Keine.
Anmerkungen
Implementierung in Vorbereitung
Die nachstehenden Funktionen sind teilweise bereits implementiert, jedoch noch nicht ausgetestet und nicht freigegeben.
- digitAt
- Ziffer aus einer Ganzzahl extrahieren
- Vorlage:Ziffer
- digitsAt
- Ziffern aus einer Ganzzahl extrahieren
- Vorlage:Ziffern
- IstZahl
- Vorlage:IstZahl
- isInList
- Ist es in der Liste?
- Vorlage:In Liste