Formato NEON
NEON é um formato de dados estruturados legível por humanos. Em Nette, ele é usado para arquivos de configuração. Também é usado para dados estruturados, tais como configurações, traduções de idiomas, etc. Experimente-o na caixa de areia.
NEON é a sigla de Nette Object Notation (Notação de Objetos NEON). Ele é menos complexo e pouco prático do que XML ou JSON, mas oferece recursos semelhantes. É muito semelhante ao YAML. A principal vantagem é que o NEON tem as chamadas entidades, graças às quais a configuração dos serviços de DI é muito atraente. E permite tabulações para indentação.
NEON é construído desde o início para ser simples de usar.
Integração
- NetBeans (tem suporte integrado)
- PhpStorm (plugin)
- Visual Studio Code(Nette Latte + Neon) ou Nette para VS Code)
- Texto Sublime 3 (plugin)
- Texto Sublime 2 (plugin)
- VIM (plugin)
- Emacs (plugin)
- Prism.js (linguagem integrada)
Sintaxe
Um arquivo escrito em NEON geralmente consiste de uma seqüência ou mapeamento.
Mappings
O mapeamento é um conjunto de pares de valores-chave, em PHP seria chamado de matriz associativa. Cada par é escrito como
key: value
, um espaço após :
é necessário. O valor pode ser qualquer coisa: string, número,
booleano, nulo, seqüência, ou outro mapeamento.
Em PHP, a mesma estrutura seria escrita como:
Esta notação é chamada de notação de bloco porque todos os itens estão em uma linha separada e têm o mesmo recuo (neste caso, nenhum). NEON também suporta a representação em linha para o mapeamento, que está entre parênteses, o recuo não tem nenhum papel, e o separador de cada elemento é ou uma vírgula ou uma nova linha:
Esta é a mesma escrita em várias linhas (indentação não importa):
Alternativamente, =
pode ser utilizado em vez de :
tanto na notação em bloco como na notação
em linha:
Seqüências
As sequências são arrays indexados em PHP. Elas são escritas como linhas começando com o hífen -
seguido por
um espaço. Novamente, o valor pode ser qualquer coisa: string, número, booleano, nulo, seqüência, ou outro mapeamento.
Em PHP, a mesma estrutura seria escrita como:
Esta notação é chamada de notação de bloco porque todos os itens estão em uma linha separada e têm o mesmo recuo (neste caso, nenhum). NEON também suporta a representação em linha para seqüências, que está entre parênteses, o recuo não tem nenhum papel, e o separador de cada elemento é ou uma vírgula ou uma nova linha:
Esta é a mesma escrita em várias linhas (indentação não importa):
Os hífens não podem ser usados em uma representação em linha.
Combinação
Os valores de mapeamentos e seqüências podem ser outros mapeamentos e seqüências. O nível de indentação tem um papel
importante. No exemplo a seguir, o hífen usado para indicar itens de seqüência tem um traço maior do que a chave
pets
, de modo que os itens se tornam o valor da primeira linha:
Em PHP, a mesma estrutura seria escrita como:
É possível combinar a notação de bloco e em linha:
A notação de bloco não pode mais ser usada dentro de uma notação em linha, isto não funciona:
No caso anterior, escrevemos um mapeamento cujos elementos eram sequências. Agora, vamos tentar o contrário e criar uma sequência contendo mapeamentos:
Não é necessário que os marcadores estejam em linhas separadas; eles também podem ser colocados dessa maneira:
Fica a seu critério alinhar as chaves em uma coluna usando espaços ou tabulação.
Porque PHP usa a mesma estrutura para mapeamento e seqüências, ou seja, arrays, ambos podem ser fundidos. A indentação é a mesma desta vez:
Em PHP, a mesma estrutura seria escrita como:
Cordas
As cordas em NEON podem ser colocadas entre aspas simples ou duplas. Mas, como você pode ver, elas também podem ser sem aspas.
Se o fio contiver caracteres # " ' , : = - [ ] { } ( )
que pode ser confundida com a sintaxe NEON, ela deve ser
delimitada entre aspas. Recomendamos o uso de aspas simples, pois elas não utilizam fugas. Se você precisar incluir uma aspas
em tal seqüência, duplique-a:
As citações duplas permitem utilizar sequências de escape para escrever caracteres especiais utilizando barras invertidas
\
. All escape sequences as in the JSON format are supported, plus \_
, que é um espaço não quebrável,
ou seja \u00A0
.
Há outros casos em que é necessário colocar as cordas entre aspas:
- elas começam ou terminam com espaços
- parecem números, booleanos, ou nulos
- NEON as entenderia como datas
Cordas Multilíngües
Uma cadeia de várias linhas começa e termina com uma aspas triplas em linhas separadas. O traço da primeira linha é ignorado para todas as linhas:
Em PHP, nós escreveríamos o mesmo que:
As seqüências de fuga só funcionam para cordas fechadas em aspas duplas em vez de apóstrofes:
Números
NEON entende números escritos na chamada notação científica e também números em binário, octal e hexadecimal:
Nulls
Nulo pode ser expresso em NEON usando null
ou não especificando um valor. Também são permitidas variantes com
letras maiúsculas em primeiro lugar ou todas as letras maiúsculas.
Booleans
Os valores booleanos são expressos em NEON usando true
/ false
ou yes
/
no
. Também são permitidas variantes com letras maiúsculas em primeiro lugar ou todas as letras maiúsculas.
Datas
NEON usa os seguintes formatos para expressar dados e os converte automaticamente para DateTimeImmutable
objetos:
Entidades
Uma entidade é uma estrutura que se assemelha a uma chamada de função:
Em PHP, ele é analisado como um objeto Nette\Neon\Entity:
As entidades também podem ser encadeadas:
Que é analisado em PHP da seguinte forma:
Dentro dos parênteses, aplicam-se as regras de notação em linha utilizadas para o mapeamento e seqüências, de modo que pode ser dividida em várias linhas e não é necessário acrescentar vírgulas:
Comentários
Os comentários começam com #
e todos os caracteres a seguir à direita são ignorados:
NEON Versus JSON
O JSON é um subconjunto do NEON. Cada JSON pode, portanto, ser analisado como NEON:
E se pudéssemos omitir citações?
Que tal aparelhos e vírgulas?
As balas são mais legíveis?
Que tal comentários?
Você encontrou a sintaxe NEON!