James Watkins
James Watkins

Reputation: 127

ruby YAML parse bug with number

I have encountered what appears to be a bug with the YAML parser. Take this simple yaml file for example:

new account:
  - FLEETBOSTON
  - 011001742

If you parse it using this ruby line of code:

INPUT_DATA = YAML.load_file("test.yml")

Then I get this back:

{"new account"=>["FLEETBOSTON", 2360290]}

Am I doing something wrong? Because I'm pretty sure this is never supposed to happen.

Upvotes: 0

Views: 298

Answers (1)

Amadan
Amadan

Reputation: 198334

It is supposed to happen. Numbers starting with 0 are in octal notation. Unless the next character is x, in which case they're hexadecimal.

07 == 7
010 == 8
011 == 9

0x9 == 9
0xA == 10
0xF == 15
0x10 == 16
0x11 == 17

Go into irb and just type in 011001742.

1.9.2-p290 :001 > 011001742
 => 2360290 

PEBKAC. :)

Your number is a number, so it's treated as a number. If you want to make it explictly a string, enclose it into quotes, so YAML will not try to make it a number.

new account:
  - FLEETBOSTON
  - '011001742'

Upvotes: 7

Related Questions