YAML
Sumario
YAML es un lenguaje de serialización de datos empleable en cualquier lenguaje de programación.
Enlaces y referencias
Conceptos
Las siguientes secciones hablan de conceptos YAML íntimamente relacionados con el módulo Perl YAML por lo que en otros lenguajes pueden existir diferencias.
flujo (stream)
Un flujo YAML es la secuencia compleata de caracters unicode que un analizador puede leer o un generador YAML puede emitir. Puede contener varios documentos YAML separados por cabeceras (---
):
--- a: mapping foo: bar --- - a - sequence
documento
Un documento YAML (document) es una representación de una estructura de datos independiente dentro de un flujo. Cada documento debe comenzar con una cabecera YAML aunque puede omitirse en el primer documento del flujo:
--- This: top level mapping is: - a - YAML - document
cabecera
Una cabecera YAML (header) es una línea que da comienzo a un documento YAML. Está compuesta de tres guiones medios y tal vez alguna información más tal como etiquetas de alto nivel e información de anclaje:
--- !recursive-sequence &001 - * 001 - * 001
nodo
Un nodo YAML (node) es la representación de una estructura de datos en particular que a su vez puede contener a otros nodos.
etiqueta
La etiqueta (tag) es similar a un tipo. Indica cómo un nodo YAML particular debería ser transferido hacia o desde la memoria. Por ejemplo un objeto de clase Foo::Bar
debería emplear la etiqueta perl/Foo:Bar
:
- !perl/Foo::Bar foo: 42 bar: stool
colección
Una colección (colecction) es el término genérico para una agrupación de datos. YAML tiene dos tipos de colecciones: mapas y secuencias (similares en Perl a hashes y arrays).
mapa
Un mapa es una colección YAML (una agrupación de datos) definida por una lista no ordenada de pares clave única/valor. En Perl se suelen cargar en memoria como hashes:
un mapa: clave1: pepe clave2: pater utativus
secuencia
Una secuencia (sequence) es una colección YAML definida por una lista ordenada de elementos. En Perl se suelen cargar en memoria como arrays:
una secuencia: - un elefante - dos elefantes - tres elefantes
escalar
Se llama escalar (scalar) a un nodo YAML que tiene un sólo valor en un momento dado y como contrapuesto a las colecciones de datos.
una variable escalar: un valor escalar
El lenguaje YAML tiene varios estilos para representar valores escalares debido a la variedad de datos y requerimientos de formato que pueden existir para conservar un punto óptimo de legilibilidad humana.
escalar plano
El tipo de escalar plano no lleva entrecomillado alguno y su etiquetado, su tipo puede deducirse automáticamente examinando su contenido. Se emplean normalmente para textos planos, números enteros, punto flotante, fechas, horas y valores monetarios:
- un texto plano y pelado - -42 - 3.1415 - 12:34 - 123 esto es un error
escalar con entrecomillado sencillo
Un escalar entre comillas simples implica que su contenido debe tomarse literalmente excepto las comillas simples adyacentes, de uso similar a las comillas simples en lenguaje Perl.
- 'Cuando digo ''\n'' quiero decir "barra invertida ene"'
escalar con entrecomillado doble
Los escalares entre comillas dobles permiten el uso de caracteres especiales (como el salto de línea \n
o la emisión de un aviso sonoro \a
) empleando la barra inclinada hacia atrás delante de ellos.
- "Este valor escalar\ntiene dos líneas y un campanilleo -->\a"
escalar plegado
Es un tipo de valor escalar que se extiende sobre varias líneas, se señala con el carácter mayor que y se comienza realmente en la siguiente línea. Su contenido es literal como en los escalares con entrecomillado sencillo y las líneas se pliegan automáticamente:
- > Este es un valor escalar que comienza en la línea siguiente a símbolo 'mayor que' y que se extiende durante varias más.
escalar en bloque
Esta forma de valor escalar también es multilínea como el tipo anterior con la diferencia de que su contenido es literal y no hay plegado automático de líneas.
Se señala con una barra vertical en una línea individual:
- | QTY DESC PRICE TOTAL --- ---- ----- ----- 1 Foo Fighters $19.95 $19.95 2 Bar Belles $29.95 $59.90