Wikipedia:Lua/Modul/JSONutil/de
Vorlagenprogrammierung | Diskussionen | Lua | Test | Unterseiten | |||
Modul | Deutsch | English
|
Modul: | Dokumentation |
JSONutil
– Modul zur Vorbereitung und Analyse von JSON-Daten, die als Parameterwerte an Lua-Module übergeben werden.
Zeilenumbrüche und Tabulatoren in Zeichenketten werden toleriert.
Statt eines pauschalen „Invalid“ wird versucht, einige typische Fehler zu detektieren und mit auffindbarem Kontext zu melden.
Zusätzlich ist es möglich, JSON-Code aus Vorlagensyntax zu generieren.
Funktionen für Vorlagen
[Am Gwëntext werkeln]- failsafe
- Versionsmanagement
Die Failsafe-Schnittstelle erlaubt den damit ausgerüsteten Modulen in globaler Verteilung
- sicherzustellen, dass eine von einer Vorlage oder einem Modul benötigte Funktion in der lokalen Kopie eines Bibliotheksmoduls vorhanden ist, und ggf. auch in einer erforderlichen Mindestversion;
- die globale Aktualisierung und Verknüpfung von Modulen über Wikidata zu verwalten.
Die Failsafe-Schnittstelle liegt sowohl auf Ebene der Vorlagen wie auch in direktem Lua-Zugriff vor.
Die Funktionen sind im Einzelnen (nicht alle werden bereits überall in vollem Umfang unterstützt):
Wert | Ergebnis | aktuell |
---|---|---|
nichtsfalse
|
lokale Version | »2020-11-08« |
Mindestversion | Mindestversionsbezeichnung Datum im ISO-Format Es wird verglichen, ob das aktuelle Modul diese Version oder später erfüllt.
|
|
wikidata
|
Versionsbezeichnung der globalen Mutter (d:Q63869449)
|
»2020-11-08« |
item
|
ID des Wikidata-Items
| |
~
|
Übereinstimmung der lokalen mit der auf Wikidata registrierten Versionsbezeichnung
|
»« |
@
|
Ist die aktuelle (Modul-)Seite richtig mit Wikidata verknüpft?
|
»Q63869449« |
Der Rückgabewert ist in der Vorlagenprogrammierung leer und per Lua false ; andernfalls die angegebene Zeichenkette.
|
Encode
[Am Gwëntext werkeln]Diese Funktionen generieren JSON-Quelltext aus Vorlagensyntax.
- encodeArray
- Generiere ein Array mit nicht-leeren Elementen.
- Parameter der Vorlageneinbindung (alle optional):
- 1
- Erstes Element des Array
- 2
- Zweites Element des Array
- 3 4 5 6 7 8 9 …
- Beliebig viele weitere Elemente des Array
- Parameter des #invoke:
- type
- Datentyp aller Elemente; boolean / number / string (optional)
- encodeComponent
- Generiere eine Komponente in einem Objekt.
- Parameter des #invoke:
- sign
- Name der Komponente
- value
- Wert der Komponente
- type
- Datentyp der Komponente; boolean / number / string (optional)
- indent
- Einrückungsstufe der JSON-Quelle (optional number)
- encodeHash
- Generiere ein Objekt.
- Parameter der Vorlageneinbindung (alle optional):
- Name1
- Wert1
- Name2
- Wert2
- Name3 Name4 Name5 Name6 … (beliebig viele weitere Komponenten)
- Wert3 Wert4 Wert5 Wert6 …
- encodeI18N
- Generiere einen mehrsprachigen Text.
- en
- Text auf Englisch (empfohlen)
- de
- Text auf Deutsch (optional)
- fr es pt zh … (beliebig viele weitere Sprachen)
- Text
- indent
- Einrückungsstufe der JSON-Quelle (optional number)
- encodeObject
- Füge eine Abfolge von Komponenten in Objekt-Klammern ein.
- 1
- JSON-Quelltext mit Komponenten, darf auf ein Komma enden
- indent
- Einrückungsstufe der JSON-Quelle (optional number)
- encodePolyglott
- Generiere einen lokalen oder mehrsprachigen Text.
- 1
- JSON-Quellcode mit mehrsprachigem Text, oder einfache Zeichenkette
- indent
- Einrückungsstufe der JSON-Quelle (optional number)
Funktionen für Lua-Module
[Am Gwëntext werkeln]Einbindung in andere Module:
local lucky, JSONutil = pcall( require, "Module:JSONutil" )
if type( JSONutil ) == "table" then
JSONutil = JSONutil.JSONutil()
else
-- Fehlerfall; JSONutil enthält Fehlermeldung
return "<span class=\"error\">" .. JSONutil .. "</span>"
end
Danach stehen zur Verfügung:
- JSONutil.failsafe(atleast)
- Versionsbezeichnung
- atleast
optional
nil oder Mindestversion oder~
- atleast
- Rückgabewert: string oder
false
- JSONutil.fair(apply)
- Reduziere freies JSON-Zeilenformat auf strikten JSON-Code und analysiere auf Fehler.
- apply
string mit JSON-Code
- apply
- Rückgabewerte:
- string mit Fehlerkennung, oder
false
wenn unbeanstandet. - string mit Fehlerkontext, oder JSON-Code wenn unbeanstandet.
- string mit Fehlerkennung, oder
- JSONutil.fault(alert, add, adapt)
- Stelle Fehlermeldung formatiert und in angepasster Sprache dar.
- alert
string mit Fehlerkennung - add
optional
string mit Fehlerkontext - adapt
optional – Anpassung der Sprache der Meldung
- alert
- Rückgabewert:
- string mit HTML-Fehlermeldung.
- JSONutil.fetch(apply, always, adapt)
- Konvertiere JSON robust in Lua
- apply
string mit JSON-Code - always
optional
true
, wenn immer vorbeugend auf freies Zeilenformat und strikten JSON-Code geprüft werden soll
Sinnvoll für die Migration HHVM→PHP7 2019. - adapt
optional – Anpassung der Sprache der Meldung
- apply
- Rückgabewert:
- string mit HTML-Fehlermeldung in angepasster Sprache.
- table mit JSON-Inhalt.
Sprachpräferenzen
[Am Gwëntext werkeln]Das Argument adapt
erlaubt eine Anpassung der Sprache der Meldung und kann folgende Datentypen annehmen:
function
– Callback- Rückgabewert ist der bestmögliche Meldungstext
- Zwei Argumente:
- table, mit Mapping: Sprachcode → Meldungstext
- string, optional, mit Meldungstext falls table versagt
- i18n@Multilingual wäre geeignet
string
– Leerzeichen-getrennte Liste bevorzugter Sprachcodes- false/nil – Projektsprache oder sonst Englisch
Encoder
[Am Gwëntext werkeln]- JSONutil.Encoder.Array( apply, adapt, alert )
- Konvertiere in ein JSON Array mit nicht-leeren Elementen.
- apply
table mit sequence der Elemente
string mit
- apply
formatiertem JSON Array, oder leer
- adapt
string mit Datentyp; boolean / number / string (optional), oder nicht - alert
true
, wenn nicht-numerische Werten Fehler auslösen sollen
- adapt
- Rückgabewert:
- string mit JSON Array
- JSONutil.Encoder.boolean( apply )
- Konvertiere in ein JSON boolean.
- apply
string mit Wert
leernull
false
0
-
ergebenfalse
, sonsttrue
- string mit JSON-Wert
- apply
- JSONutil.Encoder.Component( access, apply, adapt, align )
- Generiere eine Komponente in einem Objekt.
- access
string mit dem Namen der Komponente - apply
Wert der Komponente - adapt
string mit Datentyp; boolean / number / string (optional), oder nicht - align
number mit Einrückungsstufe der JSON-Quelle, oder nicht
- access
- Rückgabewert:
- string mit JSON-Fragment, dahinter Komma
- JSONutil.Encoder.Hash( apply, adapt, alert )
- Generiere Komponenten für ein Objekt.
- apply
table mit Zuweisungen der Werte der Komponenten - adapt
table mit Datentypen der Komponenten - string mit JSON-Fragment, dahinter Komma
- apply
- JSONutil.Encoder.I18N( apply, align )
- Generiere einen mehrsprachigen Text.
- apply
table mit den Zuweisungen der Texte zu den Sprachcodes - align
number mit Einrückungsstufe der JSON-Quelle, oder nicht
- apply
- Rückgabewert:
- string mit JSON-object
- JSONutil.Encoder.number( apply )
- Konvertiere Zeichenkette in JSON-Zahlenwert.
- apply
string mit mutmaßlicher Zahl
Typografisches Minuszeichen erlaubt
- apply
- Rückgabewert:
- number, oder
"NaN"
- number, oder
- JSONutil.Encoder.object( apply, align )
- Schließe Komponenten in Objekt-Klammern ein.
- apply
string mit Komponenten, dahinter Komma erlaubt - align
number of indentation level, or not - align
number mit Einrückungsstufe der JSON-Quelle, oder nicht
- apply
- Rückgabewert:
- string mit Fragment als JSON-object
- JSONutil.Encoder.Polyglott( apply, align )
- Generiere einen lokalen oder mehrsprachigen Text.
- apply
string mit JSON-string oder object - align
number mit Einrückungsstufe der JSON-Quelle, oder nicht
- apply
- Rückgabewert:
- string mit JSON-Fragment
- JSONutil.Encoder.string( apply )
- Konvertiere einfache Zeichenkette in strikte JSON-Zeichenkette.
- apply
string mit einfacher Zeichenkette
- apply
- Rückgabewert:
- string mit getrimmtem begrenztem JSON-string
Abhängigkeiten
[Am Gwëntext werkeln]Keine.
Verwendung
[Am Gwëntext werkeln]Allgemeine Bibliothek.
Internationalisierung
[Am Gwëntext werkeln]- commons:Data:I18n/Module:JSONutil.tab – Textbausteine
- Fehlermeldungen werden in Benutzer-/Projektsprache gezeigt.
Siehe auch
[Am Gwëntext werkeln]- jsonDebug@PerfektesChaos – Benutzerskript zur detaillierteren Analyse fataler Fehler