0 Compartilhamentos 45 Views

Você precisa conhecer YAML

20 de outubro de 2020

YAML vai completar 20 anos em maio do ano que vem e é possível que você tenha passado as últimas duas décadas sem ter ouvido falar nessa linguagem de marcação. Grande erro!

O YAML oferece uma série de vantagens sobre seus concorrentes. Seus arquivos são mais fáceis de manipular em editores de texto, há uma boa portabilidade para linguagens de programação, oferece suporte a caracteres UNICODE etc.

André Boerseun é um arquiteto de software holandês, com larga experiência em diversas empresas, que ele compartilha em seu blog pessoal. Em um artigo publicado na internet, ele apresenta os princípios fundamentais do YAML e sua complexa sintaxe.

Com sua autorização, traduzimos e reproduzimos o artigo na íntegra:

“Originalmente, YAML era um acrônimo para Yet Another Markup Language, já que seu propósito original era ser uma linguagem de marcação de documento. Os três autores, Clark Evans, Ingy döt Net e Oren Ben-Kiki se juntaram em 2001 percebendo que os projetos em que trabalharam têm muito em comum. Eles combinaram seu trabalho em um único projeto conhecido como YAML, uma linguagem de serialização de dados. Eles renomearam YAML para YAML Ain’t Markup Language, que também é um acrônimo recursivo.

YAML é comumente usado para arquivos de configuração e em aplicativos onde os dados estão sendo armazenados ou transmitidos. YAML tem tipos de dados muito simplistas (escalares, listas, arrays ..) e estruturas de dados (indentação, travessões, dois pontos ..). A extensão de um arquivo yaml pode ser yml ou yaml.

Sintaxe YAML

Sintaxe básica

A sintaxe YAML usa recuo para uma estrutura (2 espaços, não tabulações), travessões para listas e dois pontos para pares de valores-chave. Nenhuma chave duplicada é permitida no mesmo nível.

As sequências são listas:

Os mapeamentos são pares de valores-chave:

Uma sequência de mapeamentos:

Um mapeamento de mapeamentos:

O estilo de bloco emprega recuo em vez de indicadores para denotar a estrutura. Isso resulta em uma notação mais legível (embora menos compacta), mas também é menos compacta.

O estilo de fluxo pode ser considerado a extensão natural do JSON para cobrir a quebra de longas linhas de conteúdo para facilitar a leitura, marcar nós para controlar a construção de estruturas de dados nativas e usar âncoras e aliases para reutilizar instâncias de objetos construídos.

Comentários

Um comentário explícito é marcado por um indicador “#”. Os comentários devem ser separados de outros tokens por caracteres de espaço em branco. Os comentários são um detalhe da apresentação e não devem ser usados ​​para transmitir informações de conteúdo.

Escalares

YAML fornece três estilos escalares de fluxo: aspas duplas, aspas simples e simples (sem aspas). O estilo de aspas duplas é especificado pelos indicadores . Este é o único estilo capaz de expressar strings arbitrárias, usando sequências de escape. O estilo entre aspas simples é especificado pelos indicadores ao redor. Portanto, em um escalar entre aspas simples, esses caracteres precisam ser repetidos.O estilo simples (sem aspas) não tem indicadores de identificação e não fornece nenhuma forma de escape.

O escalar representa strings, inteiros, datas e outros tipos de dados atômicos.

Estruturas

YAML usa três travessões () para separar as diretivas do conteúdo do documento. Isso também serve para sinalizar o início de um documento se nenhuma diretiva estiver presente. Três pontos () indicam o final de um documento sem iniciar um novo, para uso em canais de comunicação.

Tag

As tags são usadas para definir um URI personalizado, definir tags locais e definir um tipo de dados.

As tags globais são URIs e, portanto, globalmente exclusivas em todos os aplicativos. O esquema tag: URI é recomendado para todas as tags YAML globais.

As tags locais são específicas para um único aplicativo. As tags locais começam com !, Não são URIs e não se espera que sejam globalmente exclusivas. YAML fornece uma diretiva TAG para tornar a notação de tag menos detalhada

A digitação explícita é denotada com uma tag usando o símbolo do ponto de exclamação (!).

  • !!map : { tabela de hashes, dicionário, mapeamento}
  • !!seq : { listas, arrays, vetores, sequências }
  • !!str : string Unicode
  • !!set : { cerejas, ameixas, maçãs }
  • !!omap : [ one: 1, two: 2 ]
  • !!bool : {true, false}
  • !!null : {null}
  • !!int : números negativos (-12), zero (0), números positivos (34)
  • !!float: números negativos (-12.4), zero (0), números positivos (34.7), infinito (.inf), not a number (.nan)

Âncoras

Uma âncora é denotada pelo indicador &. Ele marca um nó para referência futura. Um nó ancorado não precisa ser referenciado por nenhum nó alias. Um nó de alias é denotado pelo indicador *. O alias se refere ao nó anterior mais recente com a mesma âncora.

Indicadores

Indicadores são caracteres que têm semântica especial:

  •  (hífen) indica uma entrada de sequência de bloco.
  • ? (ponto de interrogação) indica um mapeamento de chave.
  • : (dois pontos) indica um mapeamento de valor.
  • , (vírgula) termina uma entrada de coleta de fluxo.
  • [ (colchete esquerdo) inicia uma sequência de fluxo.
  • ] (colchete direito) encerra uma sequência de fluxo.
  • { (chave esquerda) inicia um mapeamento de fluxo.
  • } (chave direita) encerra um mapeamento de fluxo.
  • # (tralha) indica um comentário.
  • & (“e comercial” ou ampersand) indica uma propriedade de âncora do nó.
  • * (asterisco) indica  um nó de alias.
  • ! (ponto de exclamação) indica tags de nó.
  • | (barra vertical) indica um bloco escalar literal.
  • > (maior que) indica um bloco escalar com dobra.
  • (apóstrofo ou aspa simples) envolve um fluxo escalar.
  • (aspas dupla) envove um fluxo escalar.
  • % (porcentagem) indica uma linha diretiva.

Exemplo de YAML

A seguir está um exemplo de uma fatura definida em YAML. A estrutura da fatura é mostrada através de indentação (2 espaços), a sequência ou lista de itens são denotados por um travessão e, por fim, todos os pares de valores-chave são denotados por dois pontos.

Referências e links

Publicado originalmente como “YAML Essentials” em 23 de agosto de 2020. Traduzido e republicado com autorização do autor.

Carregando...

Você pode se interessar

Como usar a internet de forma segura com os novos DNS da Cloudflare
Dicas
5 visualizações
Dicas
5 visualizações

Como usar a internet de forma segura com os novos DNS da Cloudflare

Carlos L. A. da Silva - 28 de novembro de 2020

Serviço oferece de forma gratuita duas opções reguladas para navegar de forma protegida.

Promoções de Jogos do Final de Semana (27/11) – Edição da Black Friday
Notícias
14 visualizações
Notícias
14 visualizações

Promoções de Jogos do Final de Semana (27/11) – Edição da Black Friday

Carlos L. A. da Silva - 27 de novembro de 2020

Confira as melhores ofertas de jogos de PC para o final de semana.

Como a Nvidia está usando rede neural no lugar de codecs de vídeo
Artigos
12 visualizações
Artigos
12 visualizações

Como a Nvidia está usando rede neural no lugar de codecs de vídeo

Carlos L. A. da Silva - 25 de novembro de 2020

Maxine é uma solução de aprendizado de máquina na nuvem que reduz a quantidade de dados transmitidos, deduzindo e gerando as partes que faltam.

Deixe um Comentário

Your email address will not be published.

Mais publicações

Promoções de Jogos do Final de Semana (20/11)
Notícias
16 visualizações
16 visualizações

Promoções de Jogos do Final de Semana (20/11)

Carlos L. A. da Silva - 20 de novembro de 2020
Top 10 soft skills para desenvolvedores
Artigos
18 visualizações
18 visualizações

Top 10 soft skills para desenvolvedores

Carlos L. A. da Silva - 20 de novembro de 2020
Como detectar um bloqueador de anúncios usando uma linha de Javascript
Dicas
20 visualizações
20 visualizações
Promoções de Jogos do Final de Semana (13/11)
Notícias
26 visualizações
26 visualizações

Promoções de Jogos do Final de Semana (13/11)

Carlos L. A. da Silva - 13 de novembro de 2020