YAML - Primitivas de sintaxis

En este capítulo, aprenderá sobre los siguientes aspectos de las primitivas de sintaxis en YAML:

  • Parámetros de producción
  • Espacios de sangría
  • Espacios de separación
  • Prefijo de línea ignorado
  • Línea plegable

Entendamos cada aspecto en detalle.

Parámetros de producción

Los parámetros de producción incluyen un conjunto de parámetros y el rango de valores permitidos que se utilizan en una producción específica. La siguiente lista de parámetros de producción se utiliza en YAML:

Sangría

Se denota por carácter n o mEl flujo de caracteres depende del nivel de sangría de los bloques incluidos en él. Muchas producciones han parametrizado estas características.

Contexto

Se denota por c. YAML admite dos grupos de contextos:block styles y flow styles.

Estilo

Se denota por s. El contenido escalar se puede presentar en uno de los cinco estilos:plain, double quoted and single quoted flow, literal and folded block.

Masticando

Se denota por t. Los escalares de bloque ofrecen muchos mecanismos que ayudan a recortar el bloque:strip, clip y keep. Chomping ayuda a formatear nuevas cadenas de línea. Se utiliza la representación del estilo de bloque. El proceso de masticación ocurre con la ayuda de indicadores. Los indicadores controlan qué salida debe producirse con nuevas líneas de cuerda. Las nuevas líneas se eliminan con(-) operador y nuevas líneas se agregan con (+) operador.

A continuación se muestra un ejemplo de proceso de masticación:

strip: |-
   text↓
clip: |
   text↓
keep: |+
   text↓

La salida después de analizar el ejemplo de YAML especificado es la siguiente:

Espacios de sangría

En el flujo de caracteres YAML, la sangría se define como un carácter de salto de línea por cero o más caracteres. El punto más importante a tener en cuenta es que la sangría no debe contener caracteres de tabulación. Los caracteres en sangría nunca deben considerarse como parte de la información de contenido del nodo. Observe el siguiente código para una mejor comprensión:

%YAML 1.1
---
!!map {
   ? !!str "Not indented"
   : !!map {
      ? !!str "By one space"
      : !!str "By four\n spaces\n",
      ? !!str "Flow style"
      : !!seq [
         !!str "By two",
         !!str "Still by two",
         !!str "Again by two",
      ]
   }
}

La salida que puede ver después de la sangría es la siguiente:

{
   "Not indented": {
      "By one space": "By four\n spaces\n", 
      "Flow style": [
         "By two", 
         "Still by two", 
         "Again by two"
      ]
   }
}

Espacios de separación

YAML usa caracteres de espacio para la separación entre tokens. La nota más importante es que la separación en YAML no debe contener tabulaciones.

El siguiente código muestra el uso de espacios de separación:

{ · first: · Sammy, · last: · Sosa · }
La sintaxis que se muestra arriba le da el siguiente resultado:
{
   "\u00b7 last": "\u00b7 Sosa \u00b7", 
   "\u00b7 first": "\u00b7 Sammy"
}

Prefijo de línea ignorado

El prefijo vacío siempre incluye sangría dependiendo del tipo escalar que también incluye un espacio en blanco inicial. Los escalares simples no deben contener caracteres de tabulación. Por otro lado, los escalares entre comillas pueden contener tabulaciones. Los escalares de bloque dependen completamente de la sangría.

El siguiente ejemplo muestra el funcionamiento del prefijo de línea ignorado de una manera sistemática:

%YAML 1.1
---
!!map {
   ? !!str "plain"
   : !!str "text lines",
   ? !!str "quoted"
   : !!str "text lines",
   ? !!str "block"
   : !!str "text·®lines\n"
}

La salida lograda para los flujos de bloques es la siguiente:

{
   "plain": "text lines", 
   "quoted": "text lines", 
   "block": "text\u00b7\u00aelines\n"
}

Línea plegable

El plegado de líneas permite romper líneas largas para facilitar la lectura. Más cantidades de líneas cortas significan una mejor legibilidad. El plegado de la línea se logra observando la semántica original de la línea larga. El siguiente ejemplo demuestra el plegado de líneas:

%YAML 1.1
--- !!str
"specific\L\
trimmed\n\n\n\
as space"

Puede ver la salida para el plegado de líneas en formato JSON de la siguiente manera:

"specific\u2028trimmed\n\n\nas space"