[ruby-core:68043] [ruby-trunk - Bug #10824] to_yaml incorrectly inserts return lines

From: tenderlove@...
Date: 2015-02-06 07:36:12 UTC
List: ruby-core #68043
Issue #10824 has been updated by Aaron Patterson.


I don't understand.  Why should it not insert the newline?  The string will roundtrip correctly:

~~~
>> require 'yaml'
=> true
>> s = "{\"config_path\":\"something\",\"mode\":\"something_underscore\",\"person\":{\"id\":1,\"name\":\"Christopher Michael Thielen\",\"address\":\"First Shields Ave\"}}"
=> "{\"config_path\":\"something\",\"mode\":\"something_underscore\",\"person\":{\"id\":1,\"name\":\"Christopher Michael Thielen\",\"address\":\"First Shields Ave\"}}"
>> s == YAML.load(s.to_yaml)
=> true
>>
~~~

I think I can add an option for the width of the yaml produced, but I don't think this is a bug.

----------------------------------------
Bug #10824: to_yaml incorrectly inserts return lines
https://bugs.ruby-lang.org/issues/10824#change-51433

* Author: Christopher Thielen
* Status: Assigned
* Priority: Normal
* Assignee: Aaron Patterson
* ruby -v: ruby 2.1.5p273 (2014-11-13 revision 48405) [x86_64-darwin14.0]
* Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN, 2.2: UNKNOWN
----------------------------------------
~~~ruby
"{\"config_path\":\"something\",\"mode\":\"something_underscore\",\"person\":{\"id\":1,\"name\":\"Christopher Michael Thielen\",\"address\":\"First Shields Ave\"}}".to_yaml
~~~
returns:

~~~ruby
"--- '{\"config_path\":\"something\",\"mode\":\"something_underscore\",\"person\":{\"id\":1,\"name\":\"Christopher\n  Michael Thielen\",\"address\":\"First Shields Ave\"}}'\n"
~~~

Note that a newline has been inserted after the word ‘Christopher’. It shouldn’t be there.

Curiously enough, if we leave out, say, the “mode” key, the newline shifts around:

~~~ruby
"{\"config_path\":\"something\",\"person\":{\"id\":1,\"name\":\"Christopher Michael Thielen\",\"address\":\"First Shields Ave\"}}".to_yaml
~~~

returns:

~~~ruby
"--- '{\"config_path\":\"something\",\"person\":{\"id\":1,\"name\":\"Christopher Michael Thielen\",\"address\":\"First\n  Shields Ave\"}}'\n"
~~~

Note that the newline isn’t after ‘Christopher' anymore but is after the word ‘First’.

This functionality appears in at least:

ruby 2.0.0p353 (2013-11-22 revision 43784) [x86_64-darwin12.5.0]

and

ruby 2.1.5p273 (2014-11-13 revision 48405) [x86_64-darwin14.0]




-- 
https://bugs.ruby-lang.org/

In This Thread

Prev Next