From: Clark C. E. <cc...@cl...> - 2003-10-16 19:18:53
|
Hello. I'd like to propose (ducks for cover) one additional type to be added to the YAML spec beyond !map, !seq, and !str -- that is !migrate, better known as the migration key. Why? 0. YAML is about serialized data, and migration between versions is always important in this context. 1. The '=' key directly affects the semantics of a generic 'yamlNode' viewer; in particular, every generic yamlNode should have something like an asScalar(), an asList() method. If the yamlNode is, a scalar: - then asScalar() returns itself - and asList() returns a list with just itself a list: - then asScalar() is an error - and asList() returns itself a mapping: - then asScalar() looks for a '=' key, if found, it calls asScalar() on the value; else it is an error - and asList() has the same behavior optionally, - a getExtValue(key) function looks in its set of keys, and if a value is not found, it recurisvely looks in sub-lists for the key. This facilitates 'inheritance'. 2. While people may 'know' that they want a !int type, they may not know that this exists, and it is very valueable. By putting it in the spec proper it will get better coverage from the implementations and for those who are teaching YAML. Thoughts? Clark |
From: Brian I. <in...@tt...> - 2003-10-16 19:45:50
|
On 16/10/03 19:23 +0000, Clark C. Evans wrote: > Hello. I'd like to propose (ducks for cover) one additional type > to be added to the YAML spec beyond !map, !seq, and !str -- that > is !migrate, better known as the migration key. Why? > > 0. YAML is about serialized data, and migration between versions > is always important in this context. > > 1. The '=' key directly affects the semantics of a generic > 'yamlNode' viewer; in particular, every generic yamlNode should > have something like an asScalar(), an asList() method. If the > yamlNode is, > > a scalar: > - then asScalar() returns itself > - and asList() returns a list with just itself > > a list: > - then asScalar() is an error > - and asList() returns itself > > a mapping: > - then asScalar() looks for a '=' key, if found, > it calls asScalar() on the value; else it is an error > - and asList() has the same behavior > > optionally, > > - a getExtValue(key) function looks in its set of keys, > and if a value is not found, it recurisvely looks in > sub-lists for the key. This facilitates 'inheritance'. > > 2. While people may 'know' that they want a !int type, they may > not know that this exists, and it is very valueable. By > putting it in the spec proper it will get better coverage > from the implementations and for those who are teaching YAML. This is a BIG assumption. What if it does not get better coverage. -1 I think the '=' key is interesting at best. Confusing at better. YAGNI at worst. Remember TMTOWTDI. I'm fairly confident that we don't want everybody to learn about '=' just to use YAML. There are other options for migration. Cheers, Brian |
From: Oren Ben-K. <or...@be...> - 2003-10-16 21:34:38
|
Clark C. Evans [mailto:cc...@cl...] wrote: > Hello. I'd like to propose (ducks for cover) one additional > type to be added to the YAML spec beyond !map, !seq, and !str -- that > is !migrate, better known as the migration key. Why? This key already exists in the type repository as the !value '=' key, with a description that refers directly to schema evolution. While this description might be improved, I don't think this key belongs in the core spec itself. Have fun, Oren Ben-Kiki |