psych 2.0.0 → 2.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.travis.yml +1 -1
- data/CHANGELOG.rdoc +22 -0
- data/ext/psych/yaml/yaml.h +1 -1
- data/lib/psych.rb +6 -6
- data/lib/psych/scalar_scanner.rb +2 -2
- data/lib/psych/visitors/to_ruby.rb +1 -1
- data/lib/psych/visitors/yaml_tree.rb +13 -2
- data/test/psych/helper.rb +29 -0
- data/test/psych/test_date_time.rb +8 -0
- data/test/psych/test_string.rb +10 -0
- metadata +14 -14
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 18ab569c52dd4c717aa67c3752008efba6f68f9d
|
4
|
+
data.tar.gz: 5de13cdc481633c56eb2e1dfb9067f9922d6ad30
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 681a0bef521a162525b1b72e538bac13373857f4e2677cf4909fc6f8e90b740b5fb3abaee0f1a480b8db48d18d7d3793141f248fd48acbe78d64747da0784a0c
|
7
|
+
data.tar.gz: e1281e00a69f1faeaeb15543baf7b588d955b8f2b64915752d4c5ad180d5630da46839c883efd468ba02651d7db882c36f38537ae43d05ae1d2ffa4c864de66e
|
data/.travis.yml
CHANGED
data/CHANGELOG.rdoc
CHANGED
@@ -1,3 +1,25 @@
|
|
1
|
+
Fri Sep 6 02:37:22 2013 Aaron Patterson <aaron@tenderlovemaking.com>
|
2
|
+
|
3
|
+
* ext/psych/lib/psych/visitors/yaml_tree.rb: use double quotes when
|
4
|
+
strings start with special characters.
|
5
|
+
[Fixes GH-157] https://github.com/tenderlove/psych/issues/157
|
6
|
+
|
7
|
+
* test/psych/test_string.rb: test for change.
|
8
|
+
|
9
|
+
Thu Aug 29 02:40:45 2013 Aaron Patterson <aaron@tenderlovemaking.com>
|
10
|
+
|
11
|
+
* ext/psych/lib/psych/scalar_scanner.rb: invalid floats should be
|
12
|
+
treated as strings.
|
13
|
+
[Fixes GH-156] https://github.com/tenderlove/psych/issues/156
|
14
|
+
|
15
|
+
* test/psych/test_string.rb: test for change
|
16
|
+
|
17
|
+
Sat Jul 6 04:49:38 2013 Aaron Patterson <aaron@tenderlovemaking.com>
|
18
|
+
|
19
|
+
* ext/psych/lib/psych/visitors/yaml_tree.rb: register time objects so
|
20
|
+
they are referenced as ids during output.
|
21
|
+
* test/psych/test_date_time.rb: corresponding test.
|
22
|
+
|
1
23
|
Wed May 15 02:22:16 2013 Aaron Patterson <aaron@tenderlovemaking.com>
|
2
24
|
|
3
25
|
* ext/psych/lib/psych.rb: Adding Psych.safe_load for loading a user
|
data/ext/psych/yaml/yaml.h
CHANGED
@@ -1089,7 +1089,7 @@ typedef struct yaml_parser_s {
|
|
1089
1089
|
yaml_error_type_t error;
|
1090
1090
|
/** Error description. */
|
1091
1091
|
const char *problem;
|
1092
|
-
/** The byte about which the problem
|
1092
|
+
/** The byte about which the problem occurred. */
|
1093
1093
|
size_t problem_offset;
|
1094
1094
|
/** The problematic value (@c -1 is none). */
|
1095
1095
|
int problem_value;
|
data/lib/psych.rb
CHANGED
@@ -41,7 +41,7 @@ require 'psych/handlers/document_stream'
|
|
41
41
|
# Psych provides a range of interfaces for parsing a YAML document ranging from
|
42
42
|
# low level to high level, depending on your parsing needs. At the lowest
|
43
43
|
# level, is an event based parser. Mid level is access to the raw YAML AST,
|
44
|
-
# and at the highest level is the ability to unmarshal YAML to
|
44
|
+
# and at the highest level is the ability to unmarshal YAML to Ruby objects.
|
45
45
|
#
|
46
46
|
# == YAML Emitting
|
47
47
|
#
|
@@ -172,7 +172,7 @@ require 'psych/handlers/document_stream'
|
|
172
172
|
#
|
173
173
|
# The lowest level parser should be used when the YAML input is already known,
|
174
174
|
# and the developer does not want to pay the price of building an AST or
|
175
|
-
# automatic detection and conversion to
|
175
|
+
# automatic detection and conversion to Ruby objects. See Psych::Parser for
|
176
176
|
# more information on using the event based parser.
|
177
177
|
#
|
178
178
|
# ==== Reading to Psych::Nodes::Stream structure
|
@@ -200,7 +200,7 @@ require 'psych/handlers/document_stream'
|
|
200
200
|
# document. This interface should be used when document format is known in
|
201
201
|
# advance or speed is a concern. See Psych::Emitter for more information.
|
202
202
|
#
|
203
|
-
# ==== Writing to a
|
203
|
+
# ==== Writing to a Ruby structure
|
204
204
|
#
|
205
205
|
# Psych.parser.parse("--- a") # => #<Psych::Parser>
|
206
206
|
#
|
@@ -216,7 +216,7 @@ require 'psych/handlers/document_stream'
|
|
216
216
|
|
217
217
|
module Psych
|
218
218
|
# The version is Psych you're using
|
219
|
-
VERSION = '2.0.
|
219
|
+
VERSION = '2.0.1'
|
220
220
|
|
221
221
|
# The version of libyaml Psych is using
|
222
222
|
LIBYAML_VERSION = Psych.libyaml_version.join '.'
|
@@ -433,7 +433,7 @@ module Psych
|
|
433
433
|
|
434
434
|
###
|
435
435
|
# Load multiple documents given in +yaml+. Returns the parsed documents
|
436
|
-
# as a list. If a block is given, each document will be converted to
|
436
|
+
# as a list. If a block is given, each document will be converted to Ruby
|
437
437
|
# and passed to the block during parsing
|
438
438
|
#
|
439
439
|
# Example:
|
@@ -458,7 +458,7 @@ module Psych
|
|
458
458
|
|
459
459
|
###
|
460
460
|
# Load the document contained in +filename+. Returns the yaml contained in
|
461
|
-
# +filename+ as a
|
461
|
+
# +filename+ as a Ruby object
|
462
462
|
def self.load_file filename
|
463
463
|
File.open(filename, 'r:bom|utf-8') { |f| self.load f, filename }
|
464
464
|
end
|
data/lib/psych/scalar_scanner.rb
CHANGED
@@ -28,7 +28,7 @@ module Psych
|
|
28
28
|
@class_loader = class_loader
|
29
29
|
end
|
30
30
|
|
31
|
-
# Tokenize +string+ returning the
|
31
|
+
# Tokenize +string+ returning the Ruby object
|
32
32
|
def tokenize string
|
33
33
|
return nil if string.empty?
|
34
34
|
return string if @string_cache.key?(string)
|
@@ -95,7 +95,7 @@ module Psych
|
|
95
95
|
end
|
96
96
|
i
|
97
97
|
when FLOAT
|
98
|
-
if string
|
98
|
+
if string =~ /\A[-+]?\.\Z/
|
99
99
|
@string_cache[string] = true
|
100
100
|
string
|
101
101
|
else
|
@@ -9,7 +9,7 @@ end
|
|
9
9
|
module Psych
|
10
10
|
module Visitors
|
11
11
|
###
|
12
|
-
# This class walks a YAML AST, converting each node to
|
12
|
+
# This class walks a YAML AST, converting each node to Ruby
|
13
13
|
class ToRuby < Psych::Visitors::Visitor
|
14
14
|
def self.create
|
15
15
|
class_loader = ClassLoader.new
|
@@ -5,7 +5,7 @@ require 'psych/class_loader'
|
|
5
5
|
module Psych
|
6
6
|
module Visitors
|
7
7
|
###
|
8
|
-
# YAMLTree builds a YAML ast given a
|
8
|
+
# YAMLTree builds a YAML ast given a Ruby object. For example:
|
9
9
|
#
|
10
10
|
# builder = Psych::Visitors::YAMLTree.new
|
11
11
|
# builder << { :foo => 'bar' }
|
@@ -47,6 +47,15 @@ module Psych
|
|
47
47
|
new(emitter, ss, options)
|
48
48
|
end
|
49
49
|
|
50
|
+
def self.new emitter = nil, ss = nil, options = nil
|
51
|
+
return super if emitter && ss && options
|
52
|
+
|
53
|
+
if $VERBOSE
|
54
|
+
warn "This API is deprecated, please pass an emitter, scalar scanner, and options or call #{self}.create() (#{caller.first})"
|
55
|
+
end
|
56
|
+
create emitter, ss
|
57
|
+
end
|
58
|
+
|
50
59
|
def initialize emitter, ss, options
|
51
60
|
super()
|
52
61
|
@started = false
|
@@ -207,7 +216,7 @@ module Psych
|
|
207
216
|
|
208
217
|
def visit_Time o
|
209
218
|
formatted = format_time o
|
210
|
-
@emitter.scalar
|
219
|
+
register o, @emitter.scalar(formatted, nil, nil, true, false, Nodes::Scalar::ANY)
|
211
220
|
end
|
212
221
|
|
213
222
|
def visit_Rational o
|
@@ -279,6 +288,8 @@ module Psych
|
|
279
288
|
quote = false
|
280
289
|
elsif o =~ /\n/
|
281
290
|
style = Nodes::Scalar::LITERAL
|
291
|
+
elsif o =~ /^\W/
|
292
|
+
style = Nodes::Scalar::DOUBLE_QUOTED
|
282
293
|
else
|
283
294
|
unless String === @ss.tokenize(o)
|
284
295
|
style = Nodes::Scalar::SINGLE_QUOTED
|
data/test/psych/helper.rb
CHANGED
@@ -83,3 +83,32 @@ module Psych
|
|
83
83
|
end
|
84
84
|
end
|
85
85
|
end
|
86
|
+
|
87
|
+
# backport so that tests will run on 1.9 and 2.0.0
|
88
|
+
unless Tempfile.respond_to? :create
|
89
|
+
def Tempfile.create(basename, *rest)
|
90
|
+
tmpfile = nil
|
91
|
+
Dir::Tmpname.create(basename, *rest) do |tmpname, n, opts|
|
92
|
+
mode = File::RDWR|File::CREAT|File::EXCL
|
93
|
+
perm = 0600
|
94
|
+
if opts
|
95
|
+
mode |= opts.delete(:mode) || 0
|
96
|
+
opts[:perm] = perm
|
97
|
+
perm = nil
|
98
|
+
else
|
99
|
+
opts = perm
|
100
|
+
end
|
101
|
+
tmpfile = File.open(tmpname, mode, opts)
|
102
|
+
end
|
103
|
+
if block_given?
|
104
|
+
begin
|
105
|
+
yield tmpfile
|
106
|
+
ensure
|
107
|
+
tmpfile.close if !tmpfile.closed?
|
108
|
+
File.unlink tmpfile
|
109
|
+
end
|
110
|
+
else
|
111
|
+
tmpfile
|
112
|
+
end
|
113
|
+
end
|
114
|
+
end
|
data/test/psych/test_string.rb
CHANGED
@@ -15,6 +15,16 @@ module Psych
|
|
15
15
|
end
|
16
16
|
end
|
17
17
|
|
18
|
+
def test_doublequotes_when_there_is_a_single
|
19
|
+
yaml = Psych.dump "@123'abc"
|
20
|
+
assert_match(/---\s*"/, yaml)
|
21
|
+
end
|
22
|
+
|
23
|
+
def test_dash_dot
|
24
|
+
assert_cycle '-.'
|
25
|
+
assert_cycle '+.'
|
26
|
+
end
|
27
|
+
|
18
28
|
def test_string_subclass_with_anchor
|
19
29
|
y = Psych.load <<-eoyml
|
20
30
|
---
|
metadata
CHANGED
@@ -1,55 +1,55 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: psych
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.
|
4
|
+
version: 2.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Aaron Patterson
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-
|
11
|
+
date: 2013-09-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rdoc
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - ~>
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '4.0'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - ~>
|
24
|
+
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '4.0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rake-compiler
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: 0.4.1
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: 0.4.1
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: hoe
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- - ~>
|
45
|
+
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: '3.6'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- - ~>
|
52
|
+
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '3.6'
|
55
55
|
description: |-
|
@@ -67,8 +67,8 @@ extra_rdoc_files:
|
|
67
67
|
- Manifest.txt
|
68
68
|
- README.rdoc
|
69
69
|
files:
|
70
|
-
- .autotest
|
71
|
-
- .travis.yml
|
70
|
+
- ".autotest"
|
71
|
+
- ".travis.yml"
|
72
72
|
- CHANGELOG.rdoc
|
73
73
|
- Manifest.txt
|
74
74
|
- README.rdoc
|
@@ -180,24 +180,24 @@ files:
|
|
180
180
|
- test/psych/visitors/test_emitter.rb
|
181
181
|
- test/psych/visitors/test_to_ruby.rb
|
182
182
|
- test/psych/visitors/test_yaml_tree.rb
|
183
|
-
- .gemtest
|
183
|
+
- ".gemtest"
|
184
184
|
homepage: http://github.com/tenderlove/psych
|
185
185
|
licenses: []
|
186
186
|
metadata: {}
|
187
187
|
post_install_message:
|
188
188
|
rdoc_options:
|
189
|
-
- --main
|
189
|
+
- "--main"
|
190
190
|
- README.rdoc
|
191
191
|
require_paths:
|
192
192
|
- lib
|
193
193
|
required_ruby_version: !ruby/object:Gem::Requirement
|
194
194
|
requirements:
|
195
|
-
- -
|
195
|
+
- - ">="
|
196
196
|
- !ruby/object:Gem::Version
|
197
197
|
version: 1.9.2
|
198
198
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
199
199
|
requirements:
|
200
|
-
- -
|
200
|
+
- - ">="
|
201
201
|
- !ruby/object:Gem::Version
|
202
202
|
version: '0'
|
203
203
|
requirements: []
|