From: nobu.nokada@... Date: 2004-04-27T11:55:24+09:00 Subject: [yaml] exponentials and double quotes in Range (Re: [syck] YAML.dump("a".."z")) Hi, At Thu, 29 Jan 2004 08:32:57 +0900, nobu.nokada@softhome.net wrote in [ruby-core:02311]: > However, is this intended? > > $ ./ruby -ryaml -e 'p ("0".."1").to_yaml' > "--- !ruby/range 0..1" > $ ./ruby -ryaml -e 'p YAML.load(("0".."1").to_yaml)' > 0..1 > $ ./ruby -ryaml -e 'p YAML.load(("0".."1").to_yaml).begin.class' > Fixnum This seems fixed now, but other issues. $ ./ruby -ryaml -e 'y 1.0e+20..2.0e+20' --- !ruby/range '1.0e+20..2.0e+20' $ ./ruby -ryaml -e 'p YAML.load((1.0e+20..2.0e+20).to_yaml)' /home/nobu/src/ruby/HEAD/lib/yaml/rubytypes.rb:372: Invalid Range: "1.0e+20..2.0e+20" (YAML::Error) from /home/nobu/src/ruby/HEAD/lib/yaml/rubytypes.rb:364:in `call' from /home/nobu/src/ruby/HEAD/lib/yaml.rb:39:in `transfer' from /home/nobu/src/ruby/HEAD/lib/yaml.rb:39:in `load' from /home/nobu/src/ruby/HEAD/lib/yaml.rb:39:in `load' from -e:1 $ ./ruby -ryaml -e 'y "\"".."."' --- !ruby/range '"\"".."."' $ ./ruby -ryaml -e 'p YAML.load(("\""..".").to_yaml)' /home/nobu/src/ruby/HEAD/lib/yaml/rubytypes.rb:372: Invalid Range: "\"\\\"\"..\".\"" (YAML::Error) from /home/nobu/src/ruby/HEAD/lib/yaml/rubytypes.rb:364:in `call' from /home/nobu/src/ruby/HEAD/lib/yaml.rb:39:in `transfer' from /home/nobu/src/ruby/HEAD/lib/yaml.rb:39:in `load' from /home/nobu/src/ruby/HEAD/lib/yaml.rb:39:in `load' from -e:1 $ ./ruby -ryaml -e "y ('\''..'.')" --- !ruby/range '"'".."."' $ ./ruby -ryaml -e "p YAML.load(('\''..'.').to_yaml)" /home/nobu/src/ruby/HEAD/lib/yaml.rb:39:in `load': parse error on line 0, col 23: `--- !ruby/range '"'".."."'' (ArgumentError) from /home/nobu/src/ruby/HEAD/lib/yaml.rb:39:in `load' from -e:1 Above 2 are simle, but the last seems to need fix in syck. Index: lib/yaml/rubytypes.rb =================================================================== RCS file: /cvs/ruby/src/ruby/lib/yaml/rubytypes.rb,v retrieving revision 1.20 diff -U2 -p -d -r1.20 rubytypes.rb --- lib/yaml/rubytypes.rb 26 Apr 2004 23:24:46 -0000 1.20 +++ lib/yaml/rubytypes.rb 27 Apr 2004 02:28:42 -0000 @@ -363,6 +363,6 @@ end YAML.add_ruby_type( 'range' ) { |type, val| - inr = '(\w+|[+-]*\d+(?:\.\d+)?|"(?:[^\\"]|\\.)*")' - if String === val and val =~ /^#{inr}(\.{2,3})#{inr}$/ + inr = %r'(\w+|[+-]?\d+(?:\.\d+)?(?:e[+-]\d+)?|"(?:[^\\"]|\\.)*")' + if String === val and val =~ /^#{inr}(\.{2,3})#{inr}$/o r1, rdots, r2 = $1, $2, $3 Range.new( YAML.load( "--- #{r1}" ), YAML.load( "--- #{r2}" ), rdots.length == 3 ) Index: test/yaml/test_yaml.rb =================================================================== RCS file: /cvs/ruby/src/ruby/test/yaml/test_yaml.rb,v retrieving revision 1.12 diff -U2 -p -d -r1.12 test_yaml.rb --- test/yaml/test_yaml.rb 16 Feb 2004 14:41:49 -0000 1.12 +++ test/yaml/test_yaml.rb 27 Apr 2004 02:34:11 -0000 @@ -381,5 +381,5 @@ EOY [ "Mark McGwire's year was crippled by a knee injury.\n" ], < - Mark McGwire's + Mark McGwire\'s year was crippled by a knee injury. @@ -910,5 +910,5 @@ literal: | not start with one. -is equal to: "The \\ \' \\" characters may \\ +is equal to: "The \\ ' \\" characters may \\ be\\nfreely used. Leading white\\n space \\ is significant.\\n\\nLine breaks are \\ @@ -1032,5 +1032,5 @@ EOY # Test Ruby regular expressions assert_to_yaml( - { 'simple' => /a.b/, 'complex' => /\A"((?:[^"]|\")+)"/, + { 'simple' => /a.b/, 'complex' => %r'\A"((?:[^"]|\")+)"', 'case-insensitive' => /George McFly/i }, <