2011-05-10 15 views
11

¿Debería ser válido lo siguiente?Sangría de una secuencia YAML dentro de una asignación

parent: 
- child 
- child 

Lo que tenemos es una secuencia de valores dentro de un mapeo.

La pregunta específica es si la sangría para la segunda y tercera líneas es válida. El Ruby YAML.dump generó este código, pero el analizador Yaml here lo rechaza, porque las líneas secundarias no tienen sangría.

decir que quiere algo como:

parent: 
    - child 
    - child 

¿Quién tiene razón?

En cuanto a la especificación YAML, es sin duda no es evidente, y la línea

El “-”, y “?” “:” Caracteres usado para denotar la colección Entradas bloque son percibidos por las personas de ser la parte de la sangría

no ayuda mucho.

Respuesta

7

Sí, eso es legal YAML. El texto relevante de la especificación es here:

Dado que las personas perciben el indicador “-” como sangría, secuencias de bloques anidados pueden tener una sangría por uno menos espacio para compensar, excepto, por supuesto, si anidada dentro de otra secuencia de bloque (contexto de bloqueo versus contexto de bloqueo).

y la posterior example 8.22:

sequence: !!seq 
- entry 
- !!seq 
- nested 
mapping: !!map 
foo: bar 
+0

Sí, la especificación es menos ambiguo aquí. Gracias. – Charliemouse

Cuestiones relacionadas