Molaskes: Wegbereiter und Vorreiter

Innovationen von Molaskes:Das GDS-Dateiformat

Das Dateiformat Grouped Data String (GDS) ist eine robuste und schnelle Möglichkeit, Arrays mit String-Schlüssel:Wert-Paaren zu speichern, die bis zu 222 Ebenen tiefes Nesting erlaubt, und derlei Daten dann auch wieder zu laden. Es funktioniert ähnlich wie JSON, ist jedoch effizienter und schneller. Ich habe es ursprünglich 2024 für meine neueste selbstentwickelte persönliche Selbstmanagement-und-Projektemanagement-Suite entwickelt und nutze es seitdem ganz allegemein als Standard-Verfahren. Es verwendet zwei ASCII-Signal-Bytes, um rekursiv Arrays in GDS-Dateien zu schreiben und GDS-Dateien wieder zurück in Arrays auszulesen:
ASCII #29 = "Group Separator" [GS]‌ ("englisch für "Gruppen-Trenner") - trennt Schlüssel:Wert-Paare als "Schlüssel[GS] Wert" - trennt Wert|Schlüssel-Grenzen einer Ebene über "Wert[GS][Ebene]Schlüssel", wobei [Ebene] das Zeichen ist, das man erhält, wenn man die Ebenentiefe (0..222) zum Zeichencode von "!" hinzuaddiert (das direkt nach dem Leerzeichen folgt) ASCII #31 = "Unit Separator" [US]‌ (englisch für "Einheiten-Trenner") - escapet alle [GS] in Werten als "[US]1" - escapet sich selbst in Werten als "[US]0"
Hier eine Beispiel-Implementierung‌ in meiner eigenen Programmiersprache Eas‌ (siehe E→Molaskes.info/Eas):
— Eas-Codec:

— Encoder:
— to Grouped Data String
— (engl. für "zu GDS")
ToGDS
  d — die zu encodierenden Daten
  l 0 — Level/Ebene
      — (nur in Rekursionen verwendet)
:
  x CHAR:29 — ASCII "group separator"
  z CHAR:31 — ASCII "unit separator"
  @@ d
    v @
    ? IS'ARRAY:v
      v ToGDS:v l+1
    \ — Escaper und Delimiter escapen
      v RXEDIT:v z z;0
      v RXEDIT:v x z;1
    /
    o[o?] @@;x;" ";v
  /
  << JOIN:o x;CHAR:33+l — ="!"+l
/

— Decoder:
— from Grouped Data String
— (engl. für "von GDS")
FromGDS
  d — der zu dekodierende
    — GDS-Datenstring
  l 0 — Level/Ebene
      — (nur in Rekursionen verwendet)
:
  x CHAR:29 — ASCII "group separator"
  z CHAR:31 — ASCII "unit separator"
  d SPLIT:d x;CHAR:33+l — ="!"+l
  l +
  @@ d
    v SPLIT:@ x;" " 1
    ? v?=1 — Endwerte ent-escapen
      v RXEDIT:v[0] z;1 x
      << RXEDIT:v z;0 z
    /
    o[v[0]] FromGDS:v[1] l
  /
  << o
/
04. Das GDS-Dateiformat
K Startseite + Kontakt
Esc Suche / Inhaltsverzeichnis
Tab