NEON-Format
NEON ist ein von Menschen lesbares strukturiertes Datenformat. In Nette wird es für Konfigurationsdateien verwendet. Es wird auch für strukturierte Daten wie Einstellungen, Sprachübersetzungen usw. verwendet. Probieren Sie es in der Sandbox aus.
NEON steht für Nette Object Notation. Sie ist weniger komplex und unhandlich als XML oder JSON, bietet aber ähnliche Möglichkeiten. Sie ist sehr ähnlich zu YAML. Der Hauptvorteil ist, dass NEON sogenannte Entitäten hat, dank derer die Konfiguration von DI-Diensten so sexy ist. Und es erlaubt Tabs für die Einrückung.
NEON ist von Grund auf so aufgebaut, dass es einfach zu benutzen ist.
Einbindung
- NetBeans (hat integrierte Unterstützung)
- PhpStorm (Plugin)
- Visual Studio Code(Nette Latte + Neon) oder Nette für VS Code)
- Sublime Text 3 (Erweiterungsmodul)
- Sublime Text 2 (Erweiterungsmodul)
- VIM (Zusatzmodul)
- Emacs (Zusatz programm)
- Prism.js (integrierte Sprache)
Syntax
Eine in NEON geschriebene Datei besteht normalerweise aus einer Sequenz oder einem Mapping.
Mappings
Mapping ist eine Menge von Schlüssel-Wert-Paaren, in PHP würde man es ein assoziatives Array nennen. Jedes Paar wird als
key: value
geschrieben, ein Leerzeichen nach :
ist erforderlich. Der Wert kann alles sein: String, Zahl,
Boolean, Null, Sequenz oder ein anderes Mapping.
In PHP würde die gleiche Struktur wie folgt geschrieben werden:
Diese Notation wird als Blocknotation bezeichnet, da alle Elemente in einer separaten Zeile stehen und die gleiche Einrückung haben (in diesem Fall keine). NEON unterstützt auch die Inline-Darstellung für das Mapping, die in Klammern eingeschlossen ist, wobei die Einrückung keine Rolle spielt und das Trennzeichen jedes Elements entweder ein Komma oder ein Zeilenumbruch ist:
Dies ist das Gleiche in mehreren Zeilen geschrieben (Einrückung spielt keine Rolle):
Alternativ kann auch `=" anstelle von verwendet werden :
sowohl in Block- als auch in Inline-Schreibweise
verwendet werden:
Sequenzen
Sequenzen sind indizierte Arrays in PHP. Sie werden als Zeilen geschrieben, die mit dem Bindestrich -
beginnen,
gefolgt von einem Leerzeichen. Auch hier kann der Wert alles sein: String, Zahl, Boolean, Null, Sequenz oder eine andere
Zuordnung.
In PHP würde die gleiche Struktur wie folgt geschrieben werden:
Diese Notation wird als Blocknotation bezeichnet, weil alle Elemente in einer separaten Zeile stehen und die gleiche Einrückung haben (in diesem Fall keine). NEON unterstützt auch die Inline-Darstellung für Sequenzen, die in eckige Klammern eingeschlossen ist, wobei die Einrückung keine Rolle spielt und das Trennzeichen jedes Elements entweder ein Komma oder ein Zeilenumbruch ist:
Dies ist das Gleiche auf mehreren Zeilen geschrieben (Einrückung spielt keine Rolle):
Bindestriche können in einer Inline-Darstellung nicht verwendet werden.
Kombination
Werte von Mappings und Sequenzen können andere Mappings und Sequenzen sein. Der Grad der Einrückung spielt eine wichtige
Rolle. Im folgenden Beispiel hat der Bindestrich zur Kennzeichnung von Sequenzelementen einen größeren Einzug als die Taste
pets
, so dass die Elemente zum Wert der ersten Zeile werden:
In PHP würde die gleiche Struktur wie folgt geschrieben werden:
Es ist möglich, Block- und Inline-Schreibweise zu kombinieren:
Die Blockschreibweise kann nicht mehr innerhalb einer Inline-Schreibweise verwendet werden, dies funktioniert nicht:
Im vorherigen Fall haben wir eine Abbildung geschrieben, deren Elemente Sequenzen waren. Versuchen wir es nun andersherum und erstellen eine Sequenz, die Mappings enthält:
Die Aufzählungspunkte müssen nicht unbedingt in separaten Zeilen stehen, sondern können auch auf diese Weise platziert werden:
Es bleibt Ihnen überlassen, ob Sie die Tasten in einer Spalte mit Leerzeichen oder mit einem Tabulator ausrichten.
Da PHP die gleiche Struktur für Mapping und Sequenzen verwendet, nämlich Arrays, können beide zusammengeführt werden. Die Einrückung ist dieses Mal die gleiche:
In PHP würde die gleiche Struktur wie folgt geschrieben werden:
Zeichenketten
Zeichenketten in NEON können in einfache oder doppelte Anführungszeichen eingeschlossen werden. Aber wie Sie sehen, können sie auch ohne Anführungszeichen sein.
Wenn die Zeichenkette Zeichen enthält # " ' , : = - [ ] { } ( )
enthält, die mit der NEON-Syntax verwechselt
werden können, muss sie in Anführungszeichen gesetzt werden. Es wird empfohlen, einfache Anführungszeichen zu verwenden, da
diese keine Umgehungszeichen verwenden. Wenn Sie ein Anführungszeichen in eine solche Zeichenfolge einschließen müssen,
verdoppeln Sie es:
Mit doppelten Anführungszeichen können Sie Escape-Sequenzen verwenden, um Sonderzeichen mit Backslashes \
. All
escape sequences as in the JSON format are supported, plus \_
zu schreiben, d. h. mit einem nicht umbrechenden
Leerzeichen \u00A0
.
Es gibt noch andere Fälle, in denen Sie Zeichenketten in Anführungszeichen einschließen müssen:
- wenn sie mit Leerzeichen beginnen oder enden
- sie sehen aus wie Zahlen, Boolesche Werte oder Null
- NEON würde sie als Datenverstehen
Mehrzeilige Zeichenketten
Eine mehrzeilige Zeichenkette beginnt und endet mit einem dreifachen Anführungszeichen in separaten Zeilen. Der Einzug der ersten Zeile wird für alle Zeilen ignoriert:
In PHP würden wir das Gleiche wie folgt schreiben:
Escaping-Sequenzen funktionieren nur für Strings, die in doppelte Anführungszeichen statt in Apostrophe eingeschlossen sind:
Zahlen
NEON versteht Zahlen in der so genannten wissenschaftlichen Notation sowie Zahlen in binärer, oktaler und hexadezimaler Schreibweise:
Nullen
Nullen können in NEON durch die Verwendung von null
oder durch die Nichtangabe eines Wertes ausgedrückt werden.
Varianten mit einem großen Anfangsbuchstaben oder nur Großbuchstaben sind ebenfalls erlaubt.
Boolesche Werte
Boolesche Werte werden in NEON durch true
/ false
oder yes
/ no
ausgedrückt. Varianten mit einem großen Anfangsbuchstaben oder Großbuchstaben sind ebenfalls zulässig.
Daten
NEON verwendet die folgenden Formate, um Daten auszudrücken und konvertiert sie automatisch in DateTimeImmutable
Objekte:
Entitäten
Eine Entität ist eine Struktur, die einem Funktionsaufruf ähnelt:
In PHP wird sie als Objekt geparst Nette\Neon\Entity:
Entitäten können auch verkettet werden:
Dies wird in PHP wie folgt geparst:
Innerhalb der Klammern gelten die Regeln für die Inline-Notation, die für Mapping und Sequenzen verwendet werden, so dass sie in mehrere Zeilen aufgeteilt werden können und keine Kommas hinzugefügt werden müssen:
Kommentare
Kommentare beginnen mit #
und alle folgenden Zeichen auf der rechten Seite werden ignoriert:
NEON Versus JSON
JSON ist eine Untermenge von NEON. Jedes JSON kann daher als NEON geparst werden:
Was wäre, wenn wir die Anführungszeichen weglassen könnten?
Wie wäre es mit Klammern und Kommas?
Sind Aufzählungszeichen besser lesbar?
Wie sieht es mit Kommentaren aus?
Sie haben die NEON-Syntax gefunden!