YAML - Estilos de flujo

Los estilos de flujo en YAML se pueden considerar como una extensión natural de JSON para cubrir las líneas de contenido plegables para una función mejor legible que utiliza anclajes y alias para crear las instancias de objeto. En este capítulo, nos centraremos en la representación de flujo de los siguientes conceptos:

  • Nodos de alias
  • Nodos vacíos
  • Estilos escalares de flujo
  • Estilos de colección de flujo
  • Nodos de flujo

El ejemplo de nodos de alias se muestra a continuación:

%YAML 1.2
---
!!map {
   ? !!str "First occurrence"
   : &A !!str "Foo",
   ? !!str "Override anchor"
   : &B !!str "Bar",
   ? !!str "Second occurrence"
   : *A,
   ? !!str "Reuse anchor"
   : *B,
}

La salida JSON del código dado arriba se da a continuación:

{
   "First occurrence": "Foo", 
   "Second occurrence": "Foo", 
   "Override anchor": "Bar", 
   "Reuse anchor": "Bar"
}

Los nodos con contenido vacío se consideran nodos vacíos. El siguiente ejemplo muestra esto:

%YAML 1.2
---
!!map {
   ? !!str "foo" : !!str "",
   ? !!str "" : !!str "bar",
}

La salida de los nodos vacíos en JSON se representa a continuación:

{
   "": "bar", 
   "foo": ""
}

Los estilos escalares de flujo incluyen tipos de comillas dobles, comillas simples y simples. El ejemplo básico para el mismo se da a continuación:

%YAML 1.2
---
!!map {
   ? !!str "implicit block key"
   : !!seq [
      !!map {
         ? !!str "implicit flow key"
         : !!str "value",
      }
   ]  
}

La salida en formato JSON para el ejemplo anterior se muestra a continuación:

{
   "implicit block key": [
      {
         "implicit flow key": "value"
      }
   ] 
}

La colección de flujo en YAML está anidada con una colección de bloques dentro de otra colección de flujo. Las entradas de colección de flujo terminan concomma (,) indicador. El siguiente ejemplo explica el bloque de recolección de flujo en detalle:

%YAML 1.2
---
!!seq [
   !!seq [
      !!str "one",
      !!str "two",
   ],
   
   !!seq [
      !!str "three",
      !!str "four",
   ],
]

La salida para la recopilación de flujo en JSON se muestra a continuación:

[
   [
      "one", 
      "two"
   ], 
   [
      "three", 
      "four"
   ]
]

Los estilos de flujo como JSON incluyen indicadores de inicio y finalización. El único estilo de flujo que no tiene ninguna propiedad es el escalar simple.

%YAML 1.2
---
!!seq [
!!seq [ !!str "a", !!str "b" ],
!!map { ? !!str "a" : !!str "b" },
!!str "a",
!!str "b",
!!str "c",]

La salida para el código que se muestra arriba en formato JSON se da a continuación:

[
   [
      "a", 
      "b"
   ], 
   
   {
      "a": "b"
   }, 
   
   "a", 
   "b", 
   "c"
]