From: Dominik Honnef Date: 2011-04-23T03:36:21+09:00 Subject: [ruby-core:35855] [Ruby 1.9 - Bug #4597] YAML doesn't consider tab stops as whitespace in mappings Issue #4597 has been updated by Dominik Honnef. Okay, I just realized that only the latest YAML specification, 1.2, allows tabs there, while older ones do not. And as far as I know, Ruby's YAML parser doesn't support the 1.2 specification... I guess that makes this bug report invalid :) ---------------------------------------- Bug #4597: YAML doesn't consider tab stops as whitespace in mappings http://redmine.ruby-lang.org/issues/4597 Author: Dominik Honnef Status: Open Priority: Low Assignee: Category: Target version: ruby -v: ruby 1.9.2p180 (2011-02-18 revision 30909) [x86_64-linux] The YAML specification states that in a mapping (aka Hash in Ruby), the mapping value indicator (":") has to be separated from the value by white space (see quotation [1]). The YAML specification also states, that white space is defined as follows: s-space ::= #x20 /* SP */ s-tab ::= #x9 /* TAB */ s-white ::= s-space | s-tab (from http://yaml.org/spec/1.2/spec.html#id2775170) Based on that, the following two lines of Ruby code should yield the same result: YAML.load("foo: bar") # => {"foo"=>"bar"} YAML.load("foo:\tbar") # => "foo:\tbar" As one can see by the annotated results, however, Ruby parses "foo:\tbar" as a scalar and not as a mapping. The same also happens for inline mappings: YAML.load("{ foo: bar }") # => {"foo"=>"bar"} YAML.load("{ foo:\tbar }") # => {"foo:\tbar"=>nil} That the tabulator is valid for separation is also explicitly stated by http://yaml.org/spec/1.2/spec.html#space/separation/ , which is referenced by quotation 1. Quotations: [1]: Normally, YAML insists the ���:��� mapping value indicator be separated from the value by white space. [from http://yaml.org/spec/1.2/spec.html#: mapping value//] -- http://redmine.ruby-lang.org