On 2/19/07, Matthieu Riou <matthieu.riou / gmail.com> wrote: > Hi, > > I'm not sure this is the right place to report issues about Syck but that's > the best I've found so far :) I think I've found a problem with the way Syck > quotes strings that could look like floats. Here is a short example: > > irb(main):001:0> require 'yaml' > => true > irb(main):002:0> YAML.dump(["1.2", "1.2.3", "1.2_3"]) > => "--- \n- \"1.2\"\n- 1.2.3\n- 1.2_3\n" > > The first element is quoted appropriately, the second isn't because there's > no ambiguity but the third should be quoted. The YAML float can have > underscores, they're used as visual separators and should be ignored by the > parser. So when seeing 1.2_3 the parser should read the float 1.23. Then to > disambiguates the string "1.2_3" should be quoted. > > Practically this isn't really a problem as YAML converts on writes so > YAML.dump(1.2_3) gets directly written as 1.23. However it creates some > interoperability issues when "1.2_3" gest written unquoted by Syck and then > read by another parser as being 1.23. The string isn't a string anymore in > that case. > Are you certain that 1.2_3 is a valid YAML float? http://yaml.org/type/float.html I do not believe underscores are valid in either YAML floats or YAML integers. Although they are allowed in Ruby, I believe Syck is handling your example case properly and without ambiguity. Blessings, TwP