Article image
Leonardo Demetrio
Leonardo Demetrio05/07/2021 21:45
Compartilhe

Linguagem YAML - Se você não conhece, uma hora vai conhecer.

    Oi pessoal, tudo bem ?

    Galera hoje eu vou falar do YAML ou Yet another markup language

    Criada em 2001, o Yaml não é apenas uma linguagem de marcação, mas sim uma linguagem de serialização de dados.

    O que é Serialização ?

    Serialização, é a técnica que permite converter objetos em bytes. Com essa conversão, esses dados podem ser salvos em disco ou enviados através de stream via HTTP, Sockets e outros.

    image

    Ok, mas onde entra o YAML nisso ?

    Com o Yaml é possível fazer essa serialização de forma simples, além da linguagem ter alguns benefícios.

    O YAML foi criado com objetivo de :

    • Ser lido facilmente por humanos
    • Portátil
    • Integrar facilmente com outras linguagens
    • Fácil de implementar e usar

    O Yaml é a linguagem principal para criar configurações em algumas aplicações feitas em Docker e Kubernetes. Por ser um arquivo leve, podemos colocar nele todas as configurações que nosso cluster Kubernetes necessita, subir ele e automaticamente o Kubernetes vai ler o arquivo e vai fazer o que for necessário sem a necessidade do desenvolvedor ficar mexendo no sistema dos containers.

    Sintaxe

    Essa é a sintaxe do Yaml, ela tem esse jeito meio estranho parecido com Python. Entretanto, enquanto o Python em 4 espaços o Yaml tem 2 espaços.

    host: DigitalInnovationOne
    datacenter:
    location: São Paulo
    router: 42
    roules:
    - web
    - dns
    

    O Yaml tem 2 estruturas. A de cima é chamada de estilo block e temos também o estilo flow logo abaixo.

    host2: "geek"
    datacenter: {location:
    São Paulo, router: 42 }
    roles: [ web, dns]
    

    Se você vem do JavaScript talvez esteja começado a entender. host é uma chave valor, datacenter é um objeto e roles é um array.

    O Yaml é forma por estrutura de chave valor que chamamos de mapeamento ou coleção. Ou seja, todo mapeamento é uma estrutura de chave e valor.

    Aqui temos uma estrutura chave valor

    chave      : valor
    host       : Digital innovation one
    datacenter : location : São Paulo
    datacenter : router : 42
    

    image

    Neste caso, Location e router são valores de datascenter, porém eles também são chave dos valores São Paulo e 42. Dessa forma eu tenho um mapeamento dos dados a serem lidos.

    host: DigitalInnovationOne
    datacenter:
    location: São Paulo
    router: 42
    
    

    Um outro ponto a ser dito são as listas. As listas também podem ser chamadas de sequências.

    roules:
    - web
    - dns
    

    Para o pessoal de Java ou .NET seria igual a isso

    String[] roules = new String[] {web,dns}

    ou

    roules = [web, dns]

    Quando queremos passar um passo a passo ou tags para a nossa aplicação, podemos utilizar as listas para fazer isso.

    Valores escalares

    Em Yaml somente os valores escalares são lidos, ou seja, os tipos primitivos como String, Bool, Int, float.

    Tirando o 42, todos os campos são Strings e estou falando todos até as chaves.

    image

    • Quando você tem um valor que não será usado em processamento, devesse coloca-lo entre aspas para ser uma String

    Podemos também imprimir certas mensagens de exceção em caso de erro no console. Para isso, podemos utilizar o | pipe ou o > maior que.

    • O | respeita a quebra de linha colocado pelo desenvolvedor. Muitos escrevem código depois dele.
    • O > escreve tudo em uma única linha, entretanto você pode criar uma hierarquia de texto com ele.

    image

    Estrutura

    No Yaml, não é permitido chaves duplicadas no mesmo arquivo. Entretanto, se quisermos escrever uma nova configuração é possível haver a repetição de chaves se houver a adição dos 3 traços (---).

    image

    O primeiro Host é a configuração 1 e o segundo 2.

    TAGS

    É possível fazer uma tag para nossa configuração a fim de chamar ela na configuração.

    Aqui criamos a tag DIO

    image

    Ancoras

    As ancoras são como TAGS, mas podemos reaproveitar elas em todas as configurações durante o documento.

    Usamos o & para pegar o valor e o símbolo de * para referenciar

    image

    Uma outra coisa que podemos fazer é o Casting. Podemos usar o !!str para transformar um valor em String e !!int para transformar um valor em inteiro.

    image

    Bom galera eu quis passar um Over view da Linguagem YAML

    Até o próxima artigo. Fiquem com Deus e abraço!

    Compartilhe
    Comentários (3)
    Joana Pereira
    Joana Pereira - 14/01/2023 20:46

    Ótima explicação, obrigada por compartilhar com a gente!

    Lucas Cunha
    Lucas Cunha - 12/01/2023 19:48

    Nossa. Muito Bom.

    Almir Costa
    Almir Costa - 25/02/2022 17:37

    Parabéns pelo artigo Leonardo Demetrio! Foi Útil.