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"
]