Thanks Dominic that works! I'm going to start switching our properties files manipulation in puppet to use augeas and if it's all good I'll create a pull request.
On Sun, Apr 8, 2012 at 12:46 PM, Dominic Cleal <[email protected]> wrote: > Hi Carlos, > > On 07/04/12 10:09, Carlos Sanchez wrote: >> I'm making a couple changes to the properties lens, but I'm struggling >> to get empty values working >> >> I've made a fork on github [1] with the tests [2] that currently fail >> with something like >> >> mykey= >> >> A snippet of the lens: >> >> let sepch = del /[ \t]*=[ \t]*/ "=" >> let value_to_eol = /[^ \t\n](.*[^ \t\n])?/ >> let entry = /[A-Za-z][A-Za-z0-9._]+/ >> let property = [ indent . key entry . sepch . store value_to_eol . eol ] >> >> Any suggestions? >> may need to reorganize it and change more than just value_to_eol? > > The first change I'd try would be to make the store value_to_eol > optional, giving you an entry without any value: > > let property = [ indent . key entry . sepch . (store value_to_eol)? . eol > ] > > You'll find when you run augparse against the test that it'll fail > due to an ambiguity when there's no value_to_eol: > > 'AA= \n' can be split into > 'AA=|=| \n' > > and > 'AA= |=|\n' > > The single space can be consumed by either the sepch lens or the > eol. To fix this, you can move the trailing space consumption > out of sepch and into the optional brackets created above: > > let sepch = del /[ \t]*=/ "=" > let property = [ indent . key entry . sepch . (indent . store > value_to_eol)? . eol ] > > This appears to work. The unit test needs a small change for the > empty.property line. An empty node would be stored with no value > rather than an empty string: > > { "empty.property" } > > Let us know once you're happy with the changes and we'll merge > them. > > Thanks, > > -- > Dominic Cleal > Red Hat Consulting > m: +44 (0)7817 878113 _______________________________________________ augeas-devel mailing list [email protected] https://www.redhat.com/mailman/listinfo/augeas-devel
