Format NEON
NEON je človeku berljiv strukturiran podatkovni format. V omrežju Nette se uporablja za konfiguracijske datoteke. Uporablja se tudi za strukturirane podatke, kot so nastavitve, jezikovni prevodi itd. Preizkusite ga v peskovniku.
NEON je kratica za Nette Object Notation. Je manj zapleten in okoren kot XML ali JSON, vendar zagotavlja podobne zmogljivosti. Zelo je podoben jeziku YAML. Glavna prednost je, da ima NEON tako imenovane entitete, zaradi katerih je konfiguracija storitev DI tako seksi. In dovoljuje tabulatorje za alineje.
Sistem NEON je od začetka zgrajen tako, da je preprost za uporabo.
Integracija
- NetBeans (ima vgrajeno podporo)
- PhpStorm (vtičnik)
- Visual Studio Code(Nette Latte + Neon) ali Nette za VS Code)
- Sublime Text 3 (vtičnik)
- Sublime Text 2 (vtičnik)
- VIM (vtičnik)
- Emacs (vtičnik)
- Prism.js (integrirani jezik)
Sintaksa
Datoteka, zapisana v NEON, je običajno sestavljena iz zaporedja ali preslikave.
Zemljevidi
Mapiranje je niz parov ključ-vrednost, v jeziku PHP bi ga imenovali asociativno polje. Vsak par je zapisan kot
key: value
, za :
je potreben presledek. Vrednost je lahko karkoli: niz, število, logična vrednost,
ničla, zaporedje ali drugo kartiranje.
V jeziku PHP bi bila enaka struktura zapisana kot:
Ta zapis se imenuje blokovni zapis, ker so vsi elementi v ločeni vrstici in imajo enako alinejo (v tem primeru je ni). NEON podpira tudi vrstnično predstavitev za preslikavo, ki je zaprta v oklepajih, alineja nima vloge, ločilo vsakega elementa pa je bodisi vejica bodisi nova vrstica:
To je isto, kar je zapisano v več vrsticah (alineja ni pomembna):
Namesto tega lahko namesto :
, tako v blokovnem kot v vrstičnem zapisu:
Zaporedja
Zaporedja so indeksirana polja v PHP. Zapisane so kot vrstice, ki se začnejo s pomišljajem -
, ki mu sledi
presledek. Tudi v tem primeru je lahko vrednost kar koli: niz, število, logična vrednost, ničla, zaporedje ali drugo
prikazovanje.
V PHP bi bila enaka struktura zapisana kot:
Ta zapis se imenuje blokovni zapis, ker so vsi elementi v ločeni vrstici in imajo enako alinejo (v tem primeru je ni). NEON podpira tudi vrstilni zapis za zaporedja, ki so zaprta v oklepajih, alineja nima vloge, ločilo vsakega elementa pa je bodisi vejica bodisi nova vrstica:
To je enako zapisano v več vrsticah (alineja ni pomembna):
V vrstični predstavitvi ni mogoče uporabljati veznikov.
Kombinacija
Vrednosti preslikav in zaporedij so lahko druge preslikave in zaporedja. Pomembno vlogo ima stopnja odmikanja. V naslednjem
primeru ima pomišljaj, ki se uporablja za označevanje elementov zaporedja, večjo alinejo kot ključ pets
, zato
elementi postanejo vrednost prve vrstice:
V jeziku PHP bi bila ista struktura zapisana kot:
Mogoče je kombinirati blokovni in vrstnični zapis:
Blokovnega zapisa ni več mogoče uporabiti znotraj vrstilnega zapisa, saj to ne deluje:
V prejšnjem primeru smo zapisali preslikavo, katere elementi so bila zaporedja. Zdaj poskusimo obratno in ustvarimo zaporedje, ki vsebuje preslikave:
Ni nujno, da so točke na ločenih vrsticah; lahko jih postavimo tudi na ta način:
Od vas je odvisno, ali jih boste v stolpcu poravnali s presledki ali tabulatorjem.
Ker PHP uporablja enako strukturo za preslikave in zaporedja, tj. polja, je mogoče oboje združiti. Vstavljanje je tokrat enako:
V PHP bi bila ista struktura zapisana kot:
.
Nizi v NEON-u so lahko zaprti v enojne ali dvojne narekovaje. Kot lahko vidite, so lahko tudi brez narekovajev.
Če niz vsebuje znake # " ' , : = - [ ] { } ( )
ki jih je mogoče zamenjati s sintakso NEON, morajo biti zaprti
v narekovaje. Priporočamo uporabo enojnih narekovajev, ker se pri njih ne uporablja izogibanje. Če morate v takem nizu zapreti
narekovaj, ga podvojite:
Dvojni narekovaji omogočajo uporabo pobeglih zaporedij za zapis posebnih znakov z uporabo povratnega lomljenja
\
. All escape sequences as in the JSON format are supported, plus \_
, ki je neprekinjen presledek, tj.
\u00A0
.
Obstajajo tudi drugi primeri, ko morate nize zapreti v narekovaje:
- se začnejo ali končajo s presledki
- so videti kot številke, logični znaki ali ničelne vrednosti
- NEON bi jih razumel kot datume
Večvrstični nizi
Večvrstični niz se začne in konča s trojnim narekovajom v ločenih vrsticah. Odmik prve vrstice se pri vseh vrsticah ne upošteva:
V jeziku PHP bi zapisali enako kot:
Zaporedja za pobeg delujejo le za nize, ki so namesto z apostrofi zaprti z dvojnimi narekovaji:
Številke
NEON razume števila, zapisana v tako imenovanem znanstvenem zapisu, in tudi števila v dvojiškem, osmeriškem in šestnajstiškem zapisu:
Ničle
Ničlo lahko v NEON-u izrazimo z uporabo null
ali tako, da ne navedemo vrednosti. Dovoljene so tudi različice
z veliko začetnico ali vsemi velikimi črkami.
Logične vrednosti
Logične vrednosti so v NEON-u izražene z uporabo true
/ false
ali yes
/
no
. Dovoljene so tudi različice z veliko začetnico ali vsemi velikimi črkami.
Datumi
NEON uporablja naslednje formate za izražanje podatkov in jih samodejno pretvori v objekte
DateTimeImmutable
:
Entitete
Entiteta je struktura, ki je podobna funkcijskemu klicu:
V jeziku PHP se analizira kot objekt Nette\Neon\Entity:
Entitete je mogoče tudi verižiti:
To se v PHP razčleni na naslednji način:
Znotraj oklepajev veljajo pravila za vrstični zapis, ki se uporabljajo za preslikave in zaporedja, zato se lahko razdeli na več vrstic in ni treba dodajati vejic:
Komentarji
Komentarji se začnejo z #
in vsi naslednji znaki na desni strani se ne upoštevajo:
NEON proti JSON
JSON je podmnožica NEON. Vsak JSON je zato mogoče razčleniti kot NEON:
Kaj pa, če bi lahko izpustili narekovaje?
Kaj pa oklepaji in vejice?
Ali so zaporedja bolj čitljiva?
Kaj pa komentarji?
Našli ste sintakso NEON!