Jevko: prosto koduj dane

Jevko (drzewko /ˈd͡ʒef.kəʊ/) to wszechstronna minimalna składnia do kodowania informacji o drzewiastej strukturze jako tekstu przyjaznego dla ludzi i maszyn.

Może być elementem konstrukcyjnym prostych formatów, języków i notacji w różnych domenach.

Dla hakerów

Jeśli jesteś hakerem, minimalistą, projektantem języków lub formatów, szukasz niezwykle minimalnej i prostej reprezentacji tekstowej drzew albo po prostu chcesz się dowiedzieć więcej na temat podstawowego Jevko, zacznij od porównania.

Dla użytkowników

Jeśli interesuje Cię gotowy, minimalny i prosty, ujednolicony format, który może być uzupełnieniem lub alternatywą dla formatów i składni takich jak HTML, XML, JSX, JSON, YAML, TOML itp., sprawdź Jevko Data And Markup Language (JDAML).

Jest to eksperymentalny format podobny do XML, zbudowany na Jevko, który sprawdza się równie dobrze do wymiany danych, konfiguracji i znaczenia tekstu.

Porównanie

Oto porównanie Jevko z najpopularniejszymi składniami często używanymi do przedstawiania drzew jako tekstu.

1

To Jevko...
 

[#jevko]

...jest podobne
do tego XML-a... 

[#like-xml]

...lub do tego
S-wyrażenia...

[#like-s-expr]

...albo
tego JSON-a1.

[#like-json]

Cechy Jevko

Tylko tekst i [nawiasy kwadratowe]

Zwykłe Jevko to po prostu tekst Unicode, w którym zagnieżdżone nawiasy kwadratowe tworzą hierarchiczną strukturę drzewa. Do tego składnia umożliwiająca escape’owanie nawiasów, więc mogą one również stanowić część tekstu. Plus trochę cukru składniowego przydatnego, gdy nie chcemy się martwić escape’owaniem. I tyle!

Jevko po prostu oddaje koncepcję generycznego drzewa tekstu w najbardziej minimalny i rozsądny sposób. Jedynymi znaczącymi znakami w Jevko są dwa nawiasy kwadratowe i jeden znak ucieczki.

Nawiasy kwadratowe w tekście

Aby traktować nawiasy kwadratowe jako tekst, można je escape’ować.

Alternatywnie tekst można ogrodzić, jak w Markdown, w którym to przypadku escape’owanie nie jest potrzebne.

Neutralność wobec białych znaków

Jevko jest całkowicie niezależne od białych znaków: traktuje białe znaki jak każdy inny znak. Nie ignoruje ich ani nie używa jako separatora ani nic w tym stylu. Wszystkie białe znaki są zachowywane w drzewie dosłownie.

Do różnych rodzajów formatów

Ze względu na swoją prostotę i ogólny charakter Jevko jest idealnym elementem konstrukcyjnym dla formatów, które dobrze sprawdzają się nie tylko do reprezentowania danych, ale także do znaczenia tekstu. Możemy nawet zrobić jedno i drugie w jednym formacie, jak pokazuje Jevko Data And Markup Language.

Jevko jest jak…

…uproszczony XML/HTML

Jevko można traktować jako bardzo uproszczony XML, w którym mamy tylko:

  1. Węzły tekstowe.
  2. Anonimowe, pozbawione tagów elementy bez atrybutów.
  3. Bardziej elastyczne i wygodne CDATA w formie tekstu ogrodzonego.

Wszystko to w wyjątkowo oszczędnej składni.

W Jevko element główny (root) jest niejawny (implicit).

…uproszczone S-wyrażenia

Jevko można traktować jako minimalną wersję S-wyrażeń, w której mamy tylko:

  1. Ciągi znaków.
  2. Listy.

Przy czym:

  1. Ciągi Jevko (węzły tekstowe) mogą rozciągać się na wiele linii i nie są ubierane w cudzysłowy (ale można je ogrodzić jak w Markdown, aby zawierały nawiasy kwadratowe bez konieczności ich escape’owania).

  2. Zamiast nawiasów okrągłych Jevko używa nawiasów kwadratowych do oddzielania list.

…uproszczony JSON

Jevko można traktować jako uproszczony JSON, w którym mamy tylko:

  1. Ciągi znaków.
  2. Listy/tabele.

Przy czym ciągi Jevko (węzły tekstowe) mogą obejmować wiele linii i nie są ubierane w cudzysłowy (ale można je ogrodzić jak w Markdown, aby zawierały nawiasy kwadratowe bez konieczności ich escape’owania).

Status Jevko

Jevko jest gruntownie przetestowane w boju, posiada stabilną specyfikację formalną (można je zaimplementować w dowolnym języku programowania) oraz implementację referencyjną w JavaScript (można jej używać w dowolnym środowisku wykonawczym JavaScript).

Idea Jevko

Jevko ma być tak proste, że zaimplementowanie podstawowego parsera Jevko przez doświadczonego programistę to kwestia maksymalnie kilku godzin. Dzięki temu można je bardzo szybko wdrożyć w dowolnym środowisku i języku programowania.

Implementowanie Jevko

Specyfikacja formalna

The Jevko Syntax: Standard Grammar Specification to stabilna formalna specyfikacja podstawowej składni. Do tej specyfikacji nie będą wprowadzane żadne istotne zmiany.

Interaktywne diagramy

Jevko interactive railroad diagrams uzupełniają specyfikację, dając wygodny punkt odniesienia do implementacji parserów i innych procesorów Jevko.

Specyfikacja rozszerzeń

The Jevko Syntax: Extensions Specification to formalna specyfikacja dwóch rozszerzeń kompatybilnych wstecz z Jevko. Te rozszerzenia wprowadzają tekst ogrodzony (fenced) a’la Markdown i tekst tagowany (tagged) a’la heredocs.

Implementacja referencyjna

jevko.js jest oficjalną referencyjną implementacją Jevko w języku JavaScript.

Więcej zasobów

Dostępne jest więcej materiałów na temat Jevko, takich jak przykłady, implementacje użytkowników, projekty oparte na Jevko, artykuły na temat Jevko, oprogramowanie oparte na Jevko, podświetlanie składni do edytorów kodu, media społecznościowe i inne.

Etymologia i wymowa

Nazwa Jevko /ˈd͡ʒef.kəʊ/ pochodzi od i wymawiana jest podobnie do polskiego drzewko /ˈdʐɛf.kɔ/.

Dostępność i licencje

Jevko ma być składnią uniwersalną, wolną i otwartą, której można używać bez ograniczeń w dowolnym oprogramowaniu i w dowolnym celu.

Ze względów prawnych, jeśli nie określono inaczej, oficjalne implementacje związane z Jevko podlegają licencji MIT.

Zawartość tej strony i oficjalnych materiałów związanych z Jevko podlega licencji CC BY 4.0.

W skrócie te licencje umożliwają swobodne wykorzystanie materiałów, również do celów komercyjnych, pod warunkiem podania informacji o autorze i licencji. Autor nie daje przy tym gwarancji i nie ponosi odpowiedzialności za efekty.

Copyright (c) 2021-2024 Jevko.org

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

Jevko jest częścią TAO, projektu mającego na celu kultywowanie prostoty w oprogramowaniu.

Wspieraj Jevko

Możesz wspierać Jevko na różne sposoby:

Przekaż datek

Jeśli uważasz, że Jevko jest wartościowym projektem oraz masz chęć i możliwość jego wsparacia, możesz to zrobić klikając poniżej:

Przekaż darowiznę bezpośrednio przez Stripe   lub   Postaw mi kawę na buycoffee.to   Buy Me a Coffee at ko-fi.com

Doceniam każde wsparcie!

Dziękuję,
Dariusz Jędrzejczak

Dziękuję za wizytę.