psych 1.3.2 → 1.3.3
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG.rdoc +31 -0
- data/ext/psych/parser.c +2 -2
- data/lib/psych.rb +1 -1
- data/lib/psych/json/yaml_events.rb +2 -2
- data/lib/psych/visitors/to_ruby.rb +8 -2
- data/lib/psych/visitors/yaml_tree.rb +2 -0
- data/test/psych/test_array.rb +10 -0
- data/test/psych/test_omap.rb +7 -0
- data/test/psych/test_parser.rb +7 -0
- data/test/psych/test_string.rb +7 -0
- metadata +31 -16
data/CHANGELOG.rdoc
CHANGED
@@ -1,3 +1,34 @@
|
|
1
|
+
Fri May 18 01:28:21 2012 Aaron Patterson <aaron@tenderlovemaking.com>
|
2
|
+
|
3
|
+
* ext/psych/parser.c (transcode_string): fix encoding index names.
|
4
|
+
Thanks markizko for reporting.
|
5
|
+
|
6
|
+
Wed May 16 05:11:29 2012 Aaron Patterson <aaron@tenderlovemaking.com>
|
7
|
+
|
8
|
+
* ext/psych/lib/psych/visitors/to_ruby.rb: fix a bug with string
|
9
|
+
subclass dumping and loading.
|
10
|
+
|
11
|
+
* test/psych/test_array.rb: pertinent tests
|
12
|
+
|
13
|
+
* test/psych/test_string.rb: ditto
|
14
|
+
|
15
|
+
Wed May 16 01:31:21 2012 Aaron Patterson <aaron@tenderlovemaking.com>
|
16
|
+
|
17
|
+
* ext/psych/lib/psych/visitors/to_ruby.rb: convert omap tagged maps to
|
18
|
+
Psych::Omap objects rather than hashes. [Bug #6425]
|
19
|
+
|
20
|
+
* test/psych/test_omap.rb: pertinent test.
|
21
|
+
|
22
|
+
Wed May 16 01:15:45 2012 Aaron Patterson <aaron@tenderlovemaking.com>
|
23
|
+
|
24
|
+
* ext/psych/lib/psych/visitors/yaml_tree.rb: keep a reference to
|
25
|
+
custom coders so that GC does not impact dumped yaml reference ids.
|
26
|
+
|
27
|
+
Mon Apr 30 04:43:53 2012 Aaron Patterson <aaron@tenderlovemaking.com>
|
28
|
+
|
29
|
+
* ext/psych/lib/psych/json/yaml_events.rb: implicit styles should not
|
30
|
+
be changeable for JSON events.
|
31
|
+
|
1
32
|
Sat Apr 7 02:07:00 2012 Aaron Patterson <aaron@tenderlovemaking.com>
|
2
33
|
|
3
34
|
* ext/psych/parser.c: fall back to any encoding if the external
|
data/ext/psych/parser.c
CHANGED
@@ -79,8 +79,8 @@ static VALUE make_exception(yaml_parser_t * parser, VALUE path)
|
|
79
79
|
static VALUE transcode_string(VALUE src, int * parser_encoding)
|
80
80
|
{
|
81
81
|
int utf8 = rb_utf8_encindex();
|
82
|
-
int utf16le = rb_enc_find_index("
|
83
|
-
int utf16be = rb_enc_find_index("
|
82
|
+
int utf16le = rb_enc_find_index("UTF-16LE");
|
83
|
+
int utf16be = rb_enc_find_index("UTF-16BE");
|
84
84
|
int source_encoding = rb_enc_get_index(src);
|
85
85
|
|
86
86
|
if (source_encoding == utf8) {
|
data/lib/psych.rb
CHANGED
@@ -10,11 +10,11 @@ module Psych
|
|
10
10
|
end
|
11
11
|
|
12
12
|
def start_mapping anchor, tag, implicit, style
|
13
|
-
super(anchor, nil,
|
13
|
+
super(anchor, nil, true, Nodes::Mapping::FLOW)
|
14
14
|
end
|
15
15
|
|
16
16
|
def start_sequence anchor, tag, implicit, style
|
17
|
-
super(anchor, nil,
|
17
|
+
super(anchor, nil, true, Nodes::Sequence::FLOW)
|
18
18
|
end
|
19
19
|
|
20
20
|
def scalar value, anchor, tag, plain, quoted, style
|
@@ -147,8 +147,7 @@ module Psych
|
|
147
147
|
string = members.delete 'str'
|
148
148
|
|
149
149
|
if klass
|
150
|
-
string = klass.allocate
|
151
|
-
string.replace string
|
150
|
+
string = klass.allocate.replace string
|
152
151
|
end
|
153
152
|
|
154
153
|
init_with(string, members.map { |k,v| [k.to_s.sub(/^@/, ''),v] }, o)
|
@@ -222,6 +221,13 @@ module Psych
|
|
222
221
|
when /^!map:(.*)$/, /^!ruby\/hash:(.*)$/
|
223
222
|
revive_hash resolve_class($1).new, o
|
224
223
|
|
224
|
+
when '!omap', 'tag:yaml.org,2002:omap'
|
225
|
+
map = register(o, Psych::Omap.new)
|
226
|
+
o.children.each_slice(2) do |l,r|
|
227
|
+
map[accept(l)] = accept r
|
228
|
+
end
|
229
|
+
map
|
230
|
+
|
225
231
|
else
|
226
232
|
revive_hash({}, o)
|
227
233
|
end
|
@@ -20,6 +20,7 @@ module Psych
|
|
20
20
|
@st = {}
|
21
21
|
@ss = ss
|
22
22
|
@options = options
|
23
|
+
@coders = []
|
23
24
|
|
24
25
|
@dispatch_cache = Hash.new do |h,klass|
|
25
26
|
method = "visit_#{(klass.name || '').split('::').join('_')}"
|
@@ -406,6 +407,7 @@ module Psych
|
|
406
407
|
end
|
407
408
|
|
408
409
|
def dump_coder o
|
410
|
+
@coders << o
|
409
411
|
tag = Psych.dump_tags[o.class]
|
410
412
|
unless tag
|
411
413
|
klass = o.class == Object ? nil : o.class.name
|
data/test/psych/test_array.rb
CHANGED
@@ -14,6 +14,16 @@ module Psych
|
|
14
14
|
@list = [{ :a => 'b' }, 'foo']
|
15
15
|
end
|
16
16
|
|
17
|
+
def test_another_subclass_with_attributes
|
18
|
+
y = Y.new.tap {|y| y.val = 1}
|
19
|
+
y << "foo" << "bar"
|
20
|
+
y = Psych.load Psych.dump y
|
21
|
+
|
22
|
+
assert_equal %w{foo bar}, y
|
23
|
+
assert_equal Y, y.class
|
24
|
+
assert_equal 1, y.val
|
25
|
+
end
|
26
|
+
|
17
27
|
def test_subclass
|
18
28
|
yaml = Psych.dump X.new
|
19
29
|
assert_match X.name, yaml
|
data/test/psych/test_omap.rb
CHANGED
@@ -2,6 +2,13 @@ require 'psych/helper'
|
|
2
2
|
|
3
3
|
module Psych
|
4
4
|
class TestOmap < TestCase
|
5
|
+
def test_parse_as_map
|
6
|
+
o = Psych.load "--- !!omap\na: 1\nb: 2"
|
7
|
+
assert_kind_of Psych::Omap, o
|
8
|
+
assert_equal 1, o['a']
|
9
|
+
assert_equal 2, o['b']
|
10
|
+
end
|
11
|
+
|
5
12
|
def test_self_referential
|
6
13
|
map = Psych::Omap.new
|
7
14
|
map['foo'] = 'bar'
|
data/test/psych/test_parser.rb
CHANGED
@@ -32,6 +32,13 @@ module Psych
|
|
32
32
|
@handler.parser = @parser
|
33
33
|
end
|
34
34
|
|
35
|
+
def test_ast_roundtrip
|
36
|
+
parser = Psych.parser
|
37
|
+
parser.parse('null')
|
38
|
+
ast = parser.handler.root
|
39
|
+
assert_match(/^null/, ast.yaml)
|
40
|
+
end
|
41
|
+
|
35
42
|
def test_exception_memory_leak
|
36
43
|
yaml = <<-eoyaml
|
37
44
|
%YAML 1.1
|
data/test/psych/test_string.rb
CHANGED
@@ -9,6 +9,13 @@ module Psych
|
|
9
9
|
attr_accessor :val
|
10
10
|
end
|
11
11
|
|
12
|
+
def test_another_subclass_with_attributes
|
13
|
+
y = Psych.load Psych.dump Y.new("foo").tap {|y| y.val = 1}
|
14
|
+
assert_equal "foo", y
|
15
|
+
assert_equal Y, y.class
|
16
|
+
assert_equal 1, y.val
|
17
|
+
end
|
18
|
+
|
12
19
|
def test_backwards_with_syck
|
13
20
|
x = Psych.load "--- !str:#{X.name} foo\n\n"
|
14
21
|
assert_equal X, x.class
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: psych
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.3.
|
4
|
+
version: 1.3.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,41 +9,56 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-06-15 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
|
-
name:
|
16
|
-
requirement:
|
15
|
+
name: rdoc
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
|
-
- -
|
19
|
+
- - ~>
|
20
20
|
- !ruby/object:Gem::Version
|
21
|
-
version:
|
21
|
+
version: '3.10'
|
22
22
|
type: :development
|
23
23
|
prerelease: false
|
24
|
-
version_requirements:
|
25
|
-
- !ruby/object:Gem::Dependency
|
26
|
-
name: rdoc
|
27
|
-
requirement: &70210793685400 !ruby/object:Gem::Requirement
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
28
25
|
none: false
|
29
26
|
requirements:
|
30
27
|
- - ~>
|
31
28
|
- !ruby/object:Gem::Version
|
32
29
|
version: '3.10'
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: rake-compiler
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ! '>='
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: 0.4.1
|
33
38
|
type: :development
|
34
39
|
prerelease: false
|
35
|
-
version_requirements:
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: 0.4.1
|
36
46
|
- !ruby/object:Gem::Dependency
|
37
47
|
name: hoe
|
38
|
-
requirement:
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
39
49
|
none: false
|
40
50
|
requirements:
|
41
51
|
- - ~>
|
42
52
|
- !ruby/object:Gem::Version
|
43
|
-
version: '
|
53
|
+
version: '3.0'
|
44
54
|
type: :development
|
45
55
|
prerelease: false
|
46
|
-
version_requirements:
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ~>
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '3.0'
|
47
62
|
description: ! 'Psych is a YAML parser and emitter. Psych leverages libyaml[http://pyyaml.org/wiki/LibYAML]
|
48
63
|
|
49
64
|
for its YAML parsing and emitting capabilities. In addition to wrapping
|
@@ -57,8 +72,8 @@ executables: []
|
|
57
72
|
extensions:
|
58
73
|
- ext/psych/extconf.rb
|
59
74
|
extra_rdoc_files:
|
60
|
-
- Manifest.txt
|
61
75
|
- CHANGELOG.rdoc
|
76
|
+
- Manifest.txt
|
62
77
|
- README.rdoc
|
63
78
|
files:
|
64
79
|
- .autotest
|
@@ -178,7 +193,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
178
193
|
version: '0'
|
179
194
|
requirements: []
|
180
195
|
rubyforge_project: psych
|
181
|
-
rubygems_version: 1.8.
|
196
|
+
rubygems_version: 1.8.23
|
182
197
|
signing_key:
|
183
198
|
specification_version: 3
|
184
199
|
summary: Psych is a YAML parser and emitter
|