2010-07-26 22 views
6

puedo expresar¿Cómo especificar rangos en YAML?

tercera página es la página de título

en YAML

title: 3 

¿Qué hay de la siguiente?

las páginas 10 a 15 contiene el capítulo 1

Una forma es

chapter 1: [10, 11, 12, 13, 14, 15] 

yo preferiría una gama aquí. ¿Hay algo así en YAML?

chapter 1: (10..15) 

** Actualización **

La siguiente sería mi alternativa si no hay tal cosa como la gama de YAML

chapter 1: 
    start page: 10 
    end page: 15 
+0

¿Por qué no simplemente 'capítulo 1: [10,15]'? Entonces crea una función en Ruby que convierta la lista a un rango? – hirolau

Respuesta

11

No hay forma directa de especificar rangos en YAML, pero algunos YAML puede almacenar objetos serializados, por ejemplo en Ruby:

... 
normal range: !ruby/range 10..20 
exclusive range: !ruby/range 11...20 
negative range: !ruby/range -1..-5 
... 

Look here

+0

Thx. Pero eso no es bueno para mí. Me sorprende que una cosa tan simple no se piense en las especificaciones de YAML. O puede ser que todos los rubyistas piensen que el rango es algo tan básico. :-) – rpattabi

+0

¿Y qué idioma estás usando? –

+0

Estoy usando Ruby. Pero preferiría tener este archivo yaml legible editable para el usuario. ! ruby ​​/ range asustará al usuario. – rpattabi

3

El rango es específico de la aplicación. Lo siguiente puede ser significativa para algunas aplicaciones:

-1 .. Q

un .. Щ

23 .. -23,45

1 .. 12:01:14 (ambos son enteros en YAML)

Pero la forma de rubí Tampoco está claro ya que no dice si los valores finales se incluyen o no: 10 .. 15

(son sólo hablando de Rang es de enteros?)

+0

Para su pregunta, incluso rangos enteros me servirían. El rango de Ruby no está claro. Tiene una sintaxis de rango exclusivo inclusivo. (1..5) inclusive; (1 ... 5) exclusivo – rpattabi

1

Andrey tiene razón, no existe un rango básico. Los rangos se pueden definir encima de tipos de datos totalmente ordenados. YAML ni siquiera conoce el concepto de ordenar, por lo que no tiene sentido hablar de rangos en YAML. YAML solo conoce el concepto de tipos de nodos, el concepto de igualdad y algunos tipos predefinidos de enlaces entre nodos. Por cierto, no conozco ningún otro lange de serialización de datos (JSON, XML, CSV, Hessian, Protocol Buffers ...) que soporte nativamente rangos.