YAML - Estilos de fluxo
Os estilos de fluxo em YAML podem ser considerados uma extensão natural do JSON para cobrir as linhas de conteúdo dobráveis para um recurso mais legível que usa âncoras e apelidos para criar as instâncias do objeto. Neste capítulo, vamos nos concentrar na representação do fluxo dos seguintes conceitos -
- Nós de alias
- Nós Vazios
- Estilos escalares de fluxo
- Estilos de coleta de fluxo
- Nós de fluxo
O exemplo de nós de alias é mostrado abaixo -
%YAML 1.2
---
!!map {
? !!str "First occurrence"
: &A !!str "Foo",
? !!str "Override anchor"
: &B !!str "Bar",
? !!str "Second occurrence"
: *A,
? !!str "Reuse anchor"
: *B,
}
A saída JSON do código fornecido acima é fornecida abaixo -
{
"First occurrence": "Foo",
"Second occurrence": "Foo",
"Override anchor": "Bar",
"Reuse anchor": "Bar"
}
Os nós com conteúdo vazio são considerados nós vazios. O exemplo a seguir mostra isso -
%YAML 1.2
---
!!map {
? !!str "foo" : !!str "",
? !!str "" : !!str "bar",
}
A saída de nós vazios em JSON é representada como abaixo -
{
"": "bar",
"foo": ""
}
Os estilos escalares de fluxo incluem aspas duplas, aspas simples e tipos simples. O exemplo básico para o mesmo é dado abaixo -
%YAML 1.2
---
!!map {
? !!str "implicit block key"
: !!seq [
!!map {
? !!str "implicit flow key"
: !!str "value",
}
]
}
A saída em formato JSON para o exemplo fornecido acima é mostrada abaixo -
{
"implicit block key": [
{
"implicit flow key": "value"
}
]
}
A coleção de fluxo em YAML é aninhada com uma coleção de bloco dentro de outra coleção de fluxo. As entradas de coleta de fluxo são encerradas comcomma (,) indicador. O exemplo a seguir explica o bloco de coleta de fluxo em detalhes -
%YAML 1.2
---
!!seq [
!!seq [
!!str "one",
!!str "two",
],
!!seq [
!!str "three",
!!str "four",
],
]
A saída para coleta de fluxo em JSON é mostrada abaixo -
[
[
"one",
"two"
],
[
"three",
"four"
]
]
Estilos de fluxo como JSON incluem indicadores de início e fim. O único estilo de fluxo que não possui nenhuma propriedade é o escalar simples.
%YAML 1.2
---
!!seq [
!!seq [ !!str "a", !!str "b" ],
!!map { ? !!str "a" : !!str "b" },
!!str "a",
!!str "b",
!!str "c",]
A saída para o código mostrado acima no formato JSON é fornecida abaixo -
[
[
"a",
"b"
],
{
"a": "b"
},
"a",
"b",
"c"
]