std.yaml

YAML-Parser für die gebräuchlichsten YAML-Strukturen (Scalare: null, bool, int, float, string; Sequenzen und Maps). Pfad-basierter Zugriff (GetString(doc, „database.host“, „localhost“)), typisierte Getter (String, Int, Float, Bool, Array, Object), Datei-Load/Save, Schlüssel-Iteration (GetKeys), Typ-Abfrage und YAML-Escape/Unescape.

Einsatzbereiche: Kubernetes/Docker-Konfigurationen, Anwendungs-Configs (einfacher als XML, lesbarer als JSON), CI/CD-Pipelines, Infrastructure-as-Code.

Autor: Andreas Röne
Copyright: 2024-2025 Andreas Röne


Imports

Konstanten

Name Typ Wert Sichtbarkeit

Funktionen

Signatur Sichtbarkeit Beschreibung
ParseString(input: pchar): int64 pub YAML-String in Dokumentstruktur parsen
GetString(doc: int64, path: pchar, default_val: pchar): pchar pub Stringwert per Pfad lesen
GetInt(doc: int64, path: pchar, default_val: int64): int64 pub Ganzzahlwert per Pfad lesen
GetFloat(doc: int64, path: pchar, default_val: f64): f64 pub Fließkommawert per Pfad lesen
GetBool(doc: int64, path: pchar, default_val: bool): bool pub Booleschen Wert per Pfad lesen
GetArray(doc: int64, path: pchar): int64 pub Array-Knoten per Pfad lesen
GetObject(doc: int64, path: pchar): int64 pub Objekt-Knoten per Pfad lesen
WriteString(doc: int64, output: pchar, max_len: int64): int64 pub Dokument als YAML-String serialisieren
WriteFile(doc: int64, path: pchar): bool pub Dokument in YAML-Datei schreiben
SetString(doc: int64, path: pchar, value: pchar): void { } pub Stringwert per Pfad setzen
SetInt(doc: int64, path: pchar, value: int64): void { } pub Ganzzahlwert per Pfad setzen
SetFloat(doc: int64, path: pchar, value: f64): void { } pub Fließkommawert per Pfad setzen
SetBool(doc: int64, path: pchar, value: bool): void { } pub Booleschen Wert per Pfad setzen
SetArray(doc: int64, path: pchar, values: pchar, count: int64): void { } pub Array-Werte per Pfad setzen
SetObject(doc: int64, path: pchar, keys: pchar, values: pchar, count: int64): void { } pub Objekt-Schlüssel und -Werte setzen
DeleteKey(doc: int64, path: pchar): bool pub Schlüssel per Pfad löschen
LoadFile(path: pchar): int64 pub YAML-Datei laden und parsen
SaveFile(doc: int64, path: pchar): bool pub Dokument als YAML-Datei speichern
HasPath(doc: int64, path: pchar): bool pub Prüft ob Pfad im Dokument existiert
GetType(doc: int64, path: pchar): int64 pub Datentyp eines Pfadwerts ermitteln
GetKeys(doc: int64, path: pchar, output: pchar, max_count: int64): int64 pub Alle Schlüssel eines Objekts liefern
GetArrayLen(doc: int64, path: pchar): int64 pub Länge eines Arrays per Pfad lesen
EscapeString(input: pchar, output: pchar): int64 pub YAML-Sonderzeichen in String escapen
UnescapeString(input: pchar, output: pchar): int64 pub YAML-Escape-Sequenzen auflösen
ParseYamlInt(s: pchar): int64 pub YAML-Ganzzahlwert aus String parsen
ParseYamlBool(s: pchar): bool pub YAML-Booleschen Wert aus String parsen
ParseYamlFloat(s: pchar): f64 pub YAML-Fließkommawert aus String parsen
IsValidKey(s: pchar): bool pub Prüft ob String ein gültiger YAML-Schlüssel
NeedsQuoting(s: pchar): bool pub Prüft ob String in YAML gequotet werden muss
 
SetArray und SetObject sind nicht umgesetzt und brechen ab. Beide melden seit lyxc 1.0.15G std.yaml: SetArray ist nicht umgesetzt (#1244) bzw. … SetObject … und beenden das Programm — vorher liefen sie still ins Leere und ließen das Dokument unverändert. Für Arrays und Objekte den YAML-Text selbst zusammensetzen.

Verschachtelte Pfade arbeiten, mit zwei Resten: Ein Punktpfad liest (GetString(doc, „server.host“c, …)) und ändert vorhandene Werte (SetInt(doc, „server.port“c, …)) korrekt. Ein neuer Schlüssel unter einem vorhandenen Knoten hängt jedoch einen zweiten gleichnamigen Block an das Dateiende, und GetType liefert für einen Knoten weiterhin 0.
(Issue #1312)