Ściągawka w formacie TOON

TOON
Narzędzia deweloperskie

Jeśli kiedykolwiek wydawało Ci się, że JSON jest zbyt gadatliwy (wszystkie te nawiasy klamrowe!), a YAML jest trochę zbyt „magiczny” i nieprzewidywalny, być może po prostu zakochasz się w TOON. Format ten zapewnia wyjątkową równowagę pomiędzy czytelnością dla człowieka i szybkością przetwarzania maszynowego. Został zaprojektowany tak, aby był gęsty, wyraźny i niewiarygodnie szybki w analizie.

Niezależnie od tego, czy migrujesz dane, czy po prostu próbujesz debugować plik konfiguracyjny, ta ściągawka opisuje podstawową składnię, którą musisz znać.

Filozofia: mniej hałasu, więcej danych

Pierwszą rzeczą, którą zauważysz, jest to, że TOON wygląda bardzo podobnie do YAML, ale zachowuje się dokładnie jak JSON. Porzuca nawiasy otwierające i zamykające na rzecz wcięć i znaków nowej linii, dzięki czemu dane natychmiast wyglądają na czystsze.

Obiekty i zagnieżdżanie

W JSON jesteś przyzwyczajony do zawijania wszystkiego w nawiasy klamrowe. W TOON struktura jest implikowana przez wcięcie.

JSON:

{ 
„projekt”: { 
„metadane”: { 
"imię": "Alfa-Centauri", 
„status”: „aktywny” 
}, 
„kamienie milowe”: [ 
{ 
„faza”: „projekt”, 
„priorytet”: 1 
}, 
{ 
"faza": "testowanie", 
„priorytet”: 2 
} 
] 
} 
} 

TOON:

projekt: 
metadane: 
nazwa: Alpha-Centauri 
stan: aktywny 
kamienie milowe[2]{faza,priorytet}: 
projekt, 1 
testowanie, 2 

Zauważ, że klucze nie wymagają cudzysłowów, chyba że zawierają znaki specjalne, a hierarchia jest oczywista wizualnie.

Potęga tablic

W tym miejscu TOON naprawdę odbiega od innych formatów. TOON wymaga zadeklarowania długości tablicy w samym kluczu. Na początku może się to wydawać dziwne, ale pozwala parserowi wstępnie przydzielić pamięć, dzięki czemu działa niesamowicie szybko.

Tablice pierwotne

W przypadku prostych list ciągów lub liczb TOON używa zwartej składni oddzielanej przecinkami.

Składnia:

klucz[długość]:element1,element2,element3 

Jeśli masz tablicę główną (cały plik to tylko lista), wygląda to tak:

Tablice tabelaryczne (funkcja zabójcza)

Jest to funkcja, która zwykle przekonuje programistów. Jeśli masz tablicę obiektów, które mają te same klucze (jak wiersze w bazie danych), TOON pozwala Ci zdefiniować schemat raz w nagłówku, a następnie po prostu wyświetlić wartości. Usuwa to ogromne ilości nadmiarowości znalezionej w JSON.

Składnia:

klucz[wiersze]{col1,col2}: 

JSON:

{ 
„inwentarz”: [ 
{ 
"sku": "KB-99", 
„ilość”: 50, 
„przejście”: 4, 
„ponowna kolejność”: fałsz 
}, 
{ 
"sku": "MS-12", 
„ilość”: 12, 
„przejście”: 7, 
„ponowna kolejność”: prawda 
}, 
{ 
"sku": "MN-44", 
„ilość”: 8, 
„przejście”: 2, 
„ponowna kolejność”: prawda 
} 
] 
} 

TOON:

zapasy[3]{sku, ilość, przejście, zmiana kolejności}: 
KB-99,50,4,fałsz 
MS-12,12,7, prawda 
MN-44,8,2,prawda 

Dzięki podejściu „CSV-inside-YAML” duże zbiory danych są niezwykle czytelne i kompaktowe.

Tablice mieszane i zagnieżdżone

Czasami dane nie są jednolite. Jeśli tablica zawiera różne typy danych (liczby zmieszane z obiektami) lub jeśli zawiera złożone obiekty zagnieżdżone, TOON powraca do składni w stylu wypunktowania, używając łączników.

Możesz nawet mieć tablice wewnątrz tablic. Zwróć uwagę, jak tablica wewnętrzna deklaruje również swoją długość:

Cytowanie: kiedy go używać

Jedną z najfajniejszych rzeczy w TOON jest to, że rzadko potrzebujesz cytatów. Możesz napisać „Witajcie 世界 👋` bez zawijania go w „” „”. Jednakże, ponieważ TOON próbuje wnioskować o typach (liczby, wartości logiczne), istnieją określone zasady określające, kiedy musisz używać cudzysłowów.

Lista „obowiązkowych cytatów”.

Musisz ująć ciąg znaków w cudzysłów ````, jeśli:

  1. Wygląda jak liczba lub wartość logiczna: Jeśli chcesz otrzymać ciąg znaków „123” lub „true”, podaj go w cudzysłowie. W przeciwnym razie stają się liczbą „123”, a wartością logiczną „prawda”.
  1. Zawiera ograniczniki: Jeśli ciąg znaków zawiera przecinek , (lub jakikolwiek inny aktywny ogranicznik), zacytuj go.
  1. Ma białe znaki na krawędziach: Spacje początkowe i końcowe wymagają cudzysłowu.
  1. Zawiera znaki specjalne: Znaki takie jak :, ", \, [, ], {, }.
  1. Jest pusty: Pusty ciąg znaków jest reprezentowany jako ”„.

Przykłady:

Sekwencje ucieczki

Zachowaj prostotę. TOON rozpoznaje tylko pięć sekwencji ucieczki wewnątrz ciągów. Wszystko inne jest nieważne.

  • \\ (odwrotny ukośnik)
  • \" (podwójny cudzysłów)
  • \n (Nowa linia)
  • \r (Powrót karetki)
  • \t (Tabulator)

Zaawansowane nagłówki i ograniczniki

A co jeśli Twoje dane są pełne przecinków? Nie chcesz cytować każdego pola. TOON umożliwia zmianę ogranicznika w nagłówku tablicy.

Możesz użyć Tab lub Pipe (|), umieszczając je wewnątrz nawiasów klamrowych.

Przykład ogranicznika rur:

Dodając | w nagłówku, parser będzie wiedział, że ma szukać potoków zamiast przecinków, zachowując w ten sposób przejrzystość składni.

Składanie kluczy

Jeśli masz głębokie zagnieżdżenie, ale tylko jedną ścieżkę danych, nie musisz wprowadzać pięciu wcięć. Możesz użyć notacji kropkowej (składania klawiszy), aby spłaszczyć swoją strukturę.

Standardowe zagnieżdżanie:

użytkownik: 
profil: 
ustawienia: 
powiadomienia: 
e-mail: prawda 
sms: fałszywy 

Złożony (czystszy):

użytkownik.profil.ustawienia.powiadomienia: 
e-mail: prawda 
sms: fałszywy 

Szybkie odwołanie do typu

TOON odwzorowuje bezpośrednio na typy JSON, ale z wdziękiem obsługuje przypadki brzegowe specyficzne dla JavaScript, aby zapewnić prawidłowe dane wyjściowe.

  • Liczby: Zapisywane jako kanoniczne ułamki dziesiętne. „1,0” staje się „1”.
  • Infinity / NaN: Stają się one „null” (ponieważ JSON ich nie obsługuje).
  • Daty: Konwertowane na cytowane ciągi ISO.
  • Niezdefiniowane/Funkcje: Konwertowane na null.
  • Puste obiekty: Reprezentowane jako nic (puste dane wyjściowe).
  • Puste tablice: Reprezentowane jako klucz[0]:.

TOON to format, który nagradza precyzję. Przyzwyczajenie się do liczenia elementów tablicy może zająć chwilę, ale korzyści w postaci czytelności i rozmiaru pliku są warte wysiłku. Miłego kodowania!