2015-10-20 00:45:03 +03:00
---
language: yaml
contributors:
2020-02-13 03:08:29 +03:00
- ["Leigh Brenecki", "https://github.com/adambrenecki"]
2022-03-28 18:25:28 +03:00
- [Suhas SG, 'https://github.com/jargnar']
2015-10-20 00:48:17 +03:00
translators:
2015-10-20 00:45:03 +03:00
- ["Rodrigo Russo", "https://github.com/rodrigozrusso"]
2015-10-20 00:58:47 +03:00
filename: learnyaml-pt.yaml
lang: pt-br
2015-10-20 00:45:03 +03:00
---
YAML é uma linguagem de serialização de dados projetado para ser diretamente gravável e
legível por seres humanos.
2019-10-01 18:36:01 +03:00
É um superconjunto de JSON, com a adição de identação e quebras de linhas sintaticamente significativas, como Python. Ao contrário de Python, entretanto, YAML não permite o caracter literal tab para identação.
2015-10-20 00:45:03 +03:00
```yaml
2022-03-28 18:25:28 +03:00
--- # início do documento
2019-10-01 19:30:53 +03:00
# Comentários em YAML são como este.
2015-10-20 00:45:03 +03:00
###################
# TIPOS ESCALARES #
###################
# Nosso objeto raiz (que continua por todo o documento) será um mapa,
# o que equivale a um dicionário, hash ou objeto em outras linguagens.
chave: valor
outra_chave: Outro valor vai aqui.
u_valor_numerico: 100
notacao_cientifica: 1e+12
boleano: true
valor_nulo: null
chave com espaco: valor
# Observe que strings não precisam de aspas. Porém, elas podem ter.
2022-03-28 18:25:28 +03:00
porem: 'Uma string, entre aspas.'
'Chaves podem estar entre aspas tambem.': "É útil se você quiser colocar um ':' na sua chave."
aspas simples: 'possuem ''um'' padrão de escape'
aspas duplas: "possuem vários: \", \0, \t, \u263A, \x0d\x0a == \r\n, e mais."
# Caracteres UTF-8/16/32 precisam ser codificados
Superscript dois: \u00B2
2015-10-20 00:45:03 +03:00
2019-10-01 18:36:01 +03:00
# Seqüências de várias linhas podem ser escritas como um 'bloco literal' (utilizando |),
2015-10-20 00:45:03 +03:00
# ou em um 'bloco compacto' (utilizando '>').
bloco_literal: |
2022-03-28 18:25:28 +03:00
Todo esse bloco de texto será o valor da chave 'bloco_literal',
preservando a quebra de com linhas.
2015-10-20 00:45:03 +03:00
2022-03-28 18:25:28 +03:00
O literal continua até 'des-indentar', e a primeira identação é
removida.
2015-10-20 00:45:03 +03:00
2022-03-28 18:25:28 +03:00
Quaisquer linhas que são 'mais identadas' mantém o resto de suas identações -
estas linhas serão identadas com 4 espaços.
2015-10-20 00:45:03 +03:00
estilo_compacto: >
2022-03-28 18:25:28 +03:00
Todo esse bloco de texto será o valor de 'estilo_compacto', mas esta
vez, todas as novas linhas serão substituídas com espaço simples.
2015-10-20 00:45:03 +03:00
2022-03-28 18:25:28 +03:00
Linhas em branco, como acima, são convertidas em um carater de nova linha.
2015-10-20 00:45:03 +03:00
2022-03-28 18:25:28 +03:00
Linhas 'mais-indentadas' mantém suas novas linhas também -
este texto irá aparecer em duas linhas.
2015-10-20 00:45:03 +03:00
####################
# TIPOS DE COLEÇÃO #
####################
# Texto aninhado é conseguido através de identação.
um_mapa_aninhado:
2022-03-28 18:25:28 +03:00
chave: valor
outra_chave: Outro valor
outro_mapa_aninhado:
ola: ola
2015-10-20 00:45:03 +03:00
# Mapas não tem que ter chaves com string.
0.25: uma chave com valor flutuante
2023-05-06 02:11:16 +03:00
# As chaves podem ser complexas, como sequência de várias linhas
# Utilizando ? seguido por espaço para indicar o começo de uma chave complexa.
2015-10-20 00:45:03 +03:00
? |
2022-03-28 18:25:28 +03:00
Esta é uma chave
que tem várias linhas
2015-10-20 00:45:03 +03:00
: e este é o seu valor
2022-03-28 18:25:28 +03:00
# YAML também permite o mapeamento entre sequências com a sintaxe chave complexa
# Alguns analisadores de linguagem de programação podem reclamar
# Um exemplo
? - Manchester United
- Real Madrid
: [2001-01-01, 2002-02-02]
2015-10-20 00:45:03 +03:00
2019-10-01 18:36:01 +03:00
# Sequências (equivalente a listas ou arrays) semelhante a isso:
2015-10-20 00:45:03 +03:00
uma_sequencia:
2022-03-28 18:25:28 +03:00
- Item 1
- Item 2
2023-05-06 02:11:16 +03:00
- 0.5 # sequências podem conter tipos diferentes.
2022-03-28 18:25:28 +03:00
- Item 4
- chave: valor
outra_chave: outro_valor
-
2023-05-06 02:11:16 +03:00
- Esta é uma sequência
- dentro de outra sequência
2022-03-28 18:25:28 +03:00
- - - Indicadores de sequência aninhadas
- podem ser recolhidas
2015-10-20 00:45:03 +03:00
# Como YAML é um super conjunto de JSON, você também pode escrever mapas JSON de estilo e
2022-03-28 18:25:28 +03:00
# sequências:
2015-10-20 00:45:03 +03:00
mapa_json: {"chave": "valor"}
json_seq: [3, 2, 1, "decolar"]
2022-03-28 18:25:28 +03:00
e aspas são opcionais: {chave: [3, 2, 1, decolar]}
2015-10-20 00:45:03 +03:00
2022-03-28 18:25:28 +03:00
###########################
# RECURSOS EXTRAS DO YAML #
###########################
2015-10-20 00:45:03 +03:00
# YAML também tem um recurso útil chamado "âncoras", que permitem que você facilmente duplique
# conteúdo em seu documento. Ambas estas chaves terão o mesmo valor:
2022-03-28 18:25:28 +03:00
conteudo_ancora: & nome_ancora Essa string irá aparecer como o valor de duas chaves.
outra_ancora: *nome_ancora
# Âncoras podem ser usadas para dubplicar/herdar propriedades
base: & base
name: Todos possuem o mesmo nome
# O regexp << é chamado Mesclar o Tipo Chave Independente-de-Idioma. É usado para
# indicar que todas as chaves de um ou mais mapas específicos devam ser inseridos
# no mapa atual.
foo:
< < : * base
2022-03-28 20:18:45 +03:00
idade: 10
2022-03-28 18:25:28 +03:00
bar:
< < : * base
2022-03-28 20:18:45 +03:00
idade: 20
2022-03-28 18:25:28 +03:00
2022-03-28 20:18:45 +03:00
# foo e bar terão o mesmo nome: Todos possuem o mesmo nome
2015-10-20 00:45:03 +03:00
# YAML também tem tags, que você pode usar para declarar explicitamente os tipos.
2022-03-28 18:25:28 +03:00
string_explicita: !!str 0.5
2015-10-20 00:45:03 +03:00
# Alguns analisadores implementam tags específicas de linguagem, como este para Python de
# Tipo de número complexo.
2022-03-28 18:25:28 +03:00
numero_complexo_em_python: !!python/complex 1+2j
# Podemos utilizar chaves YAML complexas com tags específicas de linguagem
? !!python/tuple [5, 7]
: Fifty Seven
# Seria {(5, 7): 'Fifty Seven'} em Python
2015-10-20 00:45:03 +03:00
####################
# YAML TIPOS EXTRA #
####################
# Strings e números não são os únicos que escalares YAML pode entender.
# Data e 'data e hora' literais no formato ISO também são analisados.
2022-03-28 18:25:28 +03:00
datetime: 2001-12-15T02:59:43.1Z
datetime_com_espaços: 2001-12-14 21:59:43.10 -5
date: 2002-12-14
2015-10-20 00:45:03 +03:00
2019-10-01 18:36:01 +03:00
# A tag !!binary indica que a string é na verdade um base64-encoded (codificado)
2015-10-20 00:45:03 +03:00
# representação de um blob binário.
gif_file: !!binary |
2022-03-28 18:25:28 +03:00
R0lGODlhDAAMAIQAAP//9/X17unp5WZmZgAAAOfn515eXvPz7Y6OjuDg4J+fn5
OTk6enp56enmlpaWNjY6Ojo4SEhP/++f/++f/++f/++f/++f/++f/++f/++f/+
+f/++f/++f/++f/++f/++SH+Dk1hZGUgd2l0aCBHSU1QACwAAAAADAAMAAAFLC
AgjoEwnuNAFOhpEMTRiggcz4BNJHrv/zCFcLiwMWYNG84BwwEeECcgggoBADs=
2015-10-20 00:45:03 +03:00
# YAML também tem um tipo de conjunto, o que se parece com isso:
2022-03-28 18:25:28 +03:00
conjunto:
? item1
? item2
? item3
ou: {item1, item2, item3}
2015-10-20 00:45:03 +03:00
2023-05-06 02:11:16 +03:00
# Como Python, são apenas conjuntos de mapas com valores nulos; o acima é equivalente a:
2022-03-28 18:25:28 +03:00
conjunto2:
item1: null
item2: null
item3: null
... # fim do documento
2015-10-20 00:45:03 +03:00
```
2024-04-06 18:33:50 +03:00
2022-03-28 18:25:28 +03:00
### Mais Recursos
+ [Site Oficial do YAML ](https://yaml.org/ )
+ [Validador YAML Online ](http://www.yamllint.com/ )