tags:

views:

38

answers:

3

I can express

3rd page is the title page

in YAML

title: 3

What about the following?

Pages 10 to 15 contains chapter 1

One way is

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

I would prefer a range here. Is there anything like that in YAML?

chapter 1: (10..15)

** Update **

The following would be my alternative if there is no such thing as range in YAML

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

There is not direct way to specify ranges in YAML, but some YAML can store serialized objects, for example in Ruby:

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

Look here

netme
Thx. But that's not good for me. I am surprised how such a simple thing is not thought about in YAML spec. Or may be all rubyists think range is such a basic thing! :-)
ragu.pattabi
And what language are you using?
netme
I am using Ruby. But I would prefer to have this yaml file readable editable for the user. !ruby/range will scare the user.
ragu.pattabi
+1  A: 

Range is application specific. The following may be meaningful for some applications:

-1 .. Q

a .. Щ

23 .. -23.45

1 .. 12:01:14 (both are integers in YAML !)

But the ruby way is also unclear since it does not say whether the end values are included or not: 10 .. 15

(Are you only talking about ranges of integers ?)

To your question, even integer ranges would do for me. Ruby range is not unclear. It has both inclusive exclusive range syntax. (1..5) inclusive; (1...5) exclusive
ragu.pattabi
+1  A: 

Andrey is right - there is no such thing as a basic range. Ranges can be defined on top of totally ordered data types. YAML does not even know the concept of ordering so it makes no sense to talk about ranges in YAML. YAML only knows the concept of node types, the concept of equality, and some predefined kinds of links between nodes. By the way I don't know any other data serialization lange (JSON, XML, CSV, Hessian, Protocol Buffers...) that natively supports ranges.

Jakob