mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* ext/psych/lib/psych/visitors/to_ruby.rb: quoted "<<" strings
should not be treated as merge keys. * ext/psych/lib/psych/visitors/yaml_tree.rb: hashes with keys containing "<<" should roundtrip. * test/psych/test_merge_keys.rb: test for change. Fixes GH #203 git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47315 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
7df9a77da1
commit
7a5dedf25c
4 changed files with 36 additions and 1 deletions
|
@ -1,3 +1,11 @@
|
|||
Sat Aug 30 06:00:26 2014 Aaron Patterson <aaron@tenderlovemaking.com>
|
||||
|
||||
* ext/psych/lib/psych/visitors/to_ruby.rb: quoted "<<" strings
|
||||
should not be treated as merge keys.
|
||||
* ext/psych/lib/psych/visitors/yaml_tree.rb: hashes with keys
|
||||
containing "<<" should roundtrip.
|
||||
* test/psych/test_merge_keys.rb: test for change. Fixes GH #203
|
||||
|
||||
Fri Aug 29 17:56:44 2014 SHIBATA Hiroshi <shibata.hiroshi@gmail.com>
|
||||
|
||||
* test/net/imap/test_imap_response_parser.rb: removed needless code.
|
||||
|
|
|
@ -305,7 +305,7 @@ module Psych
|
|||
key = accept(k)
|
||||
val = accept(v)
|
||||
|
||||
if key == '<<'
|
||||
if key == '<<' && k.tag != "tag:yaml.org,2002:str"
|
||||
case v
|
||||
when Nodes::Alias
|
||||
begin
|
||||
|
|
|
@ -16,10 +16,12 @@ module Psych
|
|||
def initialize
|
||||
@obj_to_id = {}
|
||||
@obj_to_node = {}
|
||||
@targets = []
|
||||
@counter = 0
|
||||
end
|
||||
|
||||
def register target, node
|
||||
@targets << target
|
||||
@obj_to_node[target.object_id] = node
|
||||
end
|
||||
|
||||
|
@ -289,6 +291,11 @@ module Psych
|
|||
quote = false
|
||||
elsif o =~ /\n/
|
||||
style = Nodes::Scalar::LITERAL
|
||||
elsif o == '<<'
|
||||
style = Nodes::Scalar::SINGLE_QUOTED
|
||||
tag = 'tag:yaml.org,2002:str'
|
||||
plain = false
|
||||
quote = false
|
||||
elsif o =~ /^\W[^"]*$/
|
||||
style = Nodes::Scalar::DOUBLE_QUOTED
|
||||
else
|
||||
|
|
|
@ -6,6 +6,26 @@ module Psych
|
|||
attr_reader :bar
|
||||
end
|
||||
|
||||
def test_roundtrip_with_chevron_key
|
||||
h = {}
|
||||
v = { 'a' => h, '<<' => h }
|
||||
assert_cycle v
|
||||
end
|
||||
|
||||
def test_explicit_string
|
||||
doc = Psych.load <<-eoyml
|
||||
a: &me { hello: world }
|
||||
b: { !!str '<<': *me }
|
||||
eoyml
|
||||
expected = {
|
||||
"a" => { "hello" => "world" },
|
||||
"b" => {
|
||||
"<<" => { "hello" => "world" }
|
||||
}
|
||||
}
|
||||
assert_equal expected, doc
|
||||
end
|
||||
|
||||
def test_mergekey_with_object
|
||||
s = <<-eoyml
|
||||
foo: &foo
|
||||
|
|
Loading…
Add table
Reference in a new issue