From: Kirrily 'S. R. <sk...@in...> - 2001-09-14 01:16:39
|
Hi all, I'm new to this list, but Brian Ingerson suggested I post here and let you know what I'm using YAML for. The other day, my boss demanded that all our in-house apps from this day forth use config files which are: - human-readable - human-editable - easily parsed in Perl - not XML (too heavy) - not home-grown hand-hacked cargo-culted text file parsing I immediately thought of YAML. So I got an early version of YAML.pm from Brian and we started using it. Since then (a couple of weeks ago) I've spread the word to a few other people, and I think they're seeing the benefits of YAML as a config file format or markup or whatever. Here's the thing though: I desperately want YAML to support vertical whitespace (blank lines) and comments. I realise that they're lossy, that deserialising and reserialising a YAML file will lose its whitespace and comments, but in our circumstances we're almost invariably just deserialising from a human-maintained file, and we want to be able to comment out chunks we don't need, or put in notes to ourselves, or whatever. Brian said this has been an issue on this list before, and I just wanted to provide a data point to say that I want this feature. Hell, I *need* this feature, and if it's not in the core of YAML I'm going to write a variant that supports it. I don't mind writing that variant, but I'd really prefer not to have non-spec-compliant quasi-YAML out there. Anyway, your thoughts would be greatly appreciated, K. |
From: Clark C . E. <cc...@cl...> - 2001-09-14 14:07:41
|
On Thu, Sep 13, 2001 at 09:16:36PM -0400, Kirrily 'Skud' Robert wrote: | Here's the thing though: | | I desperately want YAML to support vertical whitespace (blank lines) and | comments. I realise that they're lossy, that deserialising and | reserialising a YAML file will lose its whitespace and comments, but in | our circumstances we're almost invariably just deserialising from a | human-maintained file, and we want to be able to comment out chunks we | don't need, or put in notes to ourselves, or whatever. The block styles should support vertical whitespace well, as well as the N+1 CR -> N CR on parse for the other two styles. As for comments, this is a bit harder. Should comments be part of the information model; or totally stripped? If totally stripped, I guess (and really don't have that much of a problem with) using # at the very beginning of a line... but no where else? Thoughts? | Brian said this has been an issue on this list before, and I just wanted | to provide a data point to say that I want this feature. Hell, I *need* | this feature, and if it's not in the core of YAML I'm going to write a | variant that supports it. I don't mind writing that variant, but I'd | really prefer not to have non-spec-compliant quasi-YAML out there. ;) Clark |
From: Neil K. <neilk@ActiveState.com> - 2001-09-14 19:52:56
|
On Thu, Sep 13, 2001 at 09:16:36PM -0400, Kirrily 'Skud' Robert wrote: > I desperately want YAML to support vertical whitespace (blank lines) and > comments. For what it's worth, I (yaml.py implementer) would like to see these things too. -- Neil Kandalgaonkar, ActiveState ASPN - ActiveState Programmer Network http://ASPN.ActiveState.com/ |
From: Neil K. <neilk@ActiveState.com> - 2001-09-14 20:16:45
|
On Fri, Sep 14, 2001 at 12:52:48PM -0700, Neil Kandalgaonkar wrote: > On Thu, Sep 13, 2001 at 09:16:36PM -0400, Kirrily 'Skud' Robert wrote: > > > I desperately want YAML to support vertical whitespace (blank lines) and > > comments. > > For what it's worth, I (yaml.py implementer) would like to see these > things too. hrm, although I can see the value in NOT having vertical whitespace. What if you have a value you want to store as a block, and it has several significant blank lines at the end? The simplest thing I can think of is to have a '.' end of block character. foo: This block has two significant blank lines at the end No really . bar: This is the next value In practice, this means, for deserialization: trim trailing whitespace from all block values if the final characters are '\n.\n', remove the '.\n' for serialization: if the value has whitespace at the end, tack on '.\n' BTW, this can also handle the case about chomping final newline! chomped: This will be chomped notchomped: This will NOT be chomped . -- Neil Kandalgaonkar, ActiveState ASPN - ActiveState Programmer Network http://ASPN.ActiveState.com/ |
From: Clark C . E. <cc...@cl...> - 2001-11-15 23:20:53
|
Hello! | I immediately thought of YAML. How wonderful! | So I got an early version of YAML.pm from Brian and we started using it. | Since then (a couple of weeks ago) I've spread the word to a few other | people, and I think they're seeing the benefits of YAML as a config file | format or markup or whatever. Great. | I desperately want YAML to support vertical whitespace | (blank lines) and comments. I realise that they're lossy, | that deserialising and reserialising a YAML file will | lose its whitespace and comments, but in our circumstances | we're almost invariably just deserialising from a | human-maintained file, and we want to be able to | comment out chunks we don't need, or put in notes | to ourselves, or whatever. Ok. Comments are in the new specification. Basically, a comment must appear before the node that its commenting and must be on the same indentation level. --- example: # # This comments the "config" map item. # value: \ # This isn't a comment, it's a scalar # value due to the \ above. # This is a comment, and it applies # to the "list" map item. list: # this is a comment that is attached # to the first list item - this is the first list item - this is the second list item. --- \ The case above is a bit convoluted to show the possibilities. Basically, the commenting has to be indented at the same level as the item immediately following it. And the # isn't a comment within a scalar (atom). ... Ok. Now for vertical whitespace. If you want your text blocks to be WYSIWYG, you can use the block scalar: --- scalar types: block: | I can use what ever whitespace I want here and it is preserved. folded: \ With a folded scalar, leading/trailing whitespace is stripped. Further carriage returns are not significant, so that YAML can re-wrap the value. Two carriage returns introduce a single new lines in the value. Three carriage returns insert two new lines. etc. escaped: \\ Similar to folded, only that whitespace like \n can be explicit. --- \ I hope this explains how you can use vertical whitespace. Cool? | Brian said this has been an issue on this list before, | and I just wanted to provide a data point to say that | I want this feature. Hell, I *need* this feature, and | if it's not in the core of YAML I'm going to write a | variant that supports it. I don't mind writing that | variant, but I'd really prefer not to have | non-spec-compliant quasi-YAML out there. Thanks. Were doing the best we can to accomidate without including the kitchen sink. I hope the methods above help you and that this explanation helps you understand the state of the current specification... I doubt any of the items above will change. Best, Clark k |
From: Clark C . E. <cc...@cl...> - 2001-11-15 23:43:27
|
I wrote: | # This comments the "config" map item. | # | value: \ c/config/value I was trying to convey, that in proposed the "serilization model" the comment is attached to the separator or list/map entry (not the node) that immediately follows. And that comments don't occur within a scalar value. Sorry if I mangled the example badly. Best, Clark |