Zum Inhalt springen

Wikipedia:Lua/Modul/JSONutil/de

Aus Wikipedia
Vorlagenprogrammierung Diskussionen Lua Test Unterseiten
Modul Deutsch English

Modul: Dokumentation
Weiterleitung der Diskussionsseite fehlt

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

Parameter
Wert Ergebnis aktuell
nichts
false
lokale Version »2020-11-08«
Mindest­version Mindestversionsbezeichnung
Datum im ISO-Format

Es wird verglichen, ob das aktuelle Modul diese Version oder später erfüllt.

  • leer, falls Mindestversion nicht erfüllt
  • 2001-01-01 → »2020-11-08«
  • 2099-01-01 → »«
wikidata Versionsbezeichnung der globalen Mutter (d:Q63869449)
  • Versionsbezeichnung auf Wikidata
  • lokal, falls dort keine gefunden
»2020-11-08«
item ID des Wikidata-Items
  • leer, falls nicht definiert
  • Q63869449
~ Übereinstimmung der lokalen mit der auf Wikidata registrierten Versionsbezeichnung
  • leer, falls aktuell
  • Versionsbezeichnung auf Wikidata, falls ungleich
»«
@ Ist die aktuelle (Modul-)Seite richtig mit Wikidata verknüpft?
  • leer, falls mit dem richtigen Item verknüpft
  • Item-ID, falls nicht
»Q63869449«
Der Rückgabewert ist in der Vorlagenprogrammierung leer und per Lua false; andernfalls die angegebene Zeichenkette.

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 ~
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
Rückgabewerte:
  1. string mit Fehlerkennung, oder false wenn unbeanstandet.
  2. string mit Fehlerkontext, oder JSON-Code wenn unbeanstandet.
JSONutil.fault(alert, add, adapt)
Stelle Fehlermeldung formatiert und in angepasster Sprache dar.
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
    optionalAnpassung der Sprache der Meldung
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:
      1. table, mit Mapping: Sprachcode → Meldungstext
      2. string, optional, mit Meldungstext falls table versagt
    • i18n@Multilingual wäre geeignet
  • string – Leerzeichen-getrennte Liste bevorzugter Sprachcodes
  • false/nil – Projektsprache oder sonst Englisch
JSONutil.Encoder.Array( apply, adapt, alert )
Konvertiere in ein JSON Array mit nicht-leeren Elementen.
  • apply
    table mit sequence der Elemente
    string mit

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
Rückgabewert:
  • string mit JSON Array
JSONutil.Encoder.boolean( apply )
Konvertiere in ein JSON boolean.
  • apply
    string mit Wert
    leer null false 0 - ergeben false, sonst true
  • string mit JSON-Wert
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
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
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
Rückgabewert:
  • string mit JSON-object
JSONutil.Encoder.number( apply )
Konvertiere Zeichenkette in JSON-Zahlenwert.
  • apply
    string mit mutmaßlicher Zahl
    Typografisches Minuszeichen erlaubt
Rückgabewert:
  • number, oder "NaN"
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
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
Rückgabewert:
  • string mit JSON-Fragment
JSONutil.Encoder.string( apply )
Konvertiere einfache Zeichenkette in strikte JSON-Zeichenkette.
  • apply
    string mit einfacher Zeichenkette
Rückgabewert:
  • string mit getrimmtem begrenztem JSON-string

Abhängigkeiten

[Am Gwëntext werkeln]

Keine.

Allgemeine Bibliothek.

Internationalisierung

[Am Gwëntext werkeln]