rufus-json 0.2.1 → 0.2.2
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.
- data/CHANGELOG.txt +5 -0
- data/Rakefile +4 -2
- data/lib/rufus/json.rb +23 -6
- data/rufus-json.gemspec +9 -3
- data/test/test.rb +22 -0
- metadata +29 -4
data/CHANGELOG.txt
CHANGED
data/Rakefile
CHANGED
@@ -31,7 +31,7 @@ One interface to various JSON ruby libs (yajl, json, json_pure, json-jruby, acti
|
|
31
31
|
}
|
32
32
|
gem.email = 'jmettraux@gmail.com'
|
33
33
|
gem.homepage = 'http://github.com/jmettraux/rufus-json/'
|
34
|
-
gem.authors = [ 'John Mettraux' ]
|
34
|
+
gem.authors = [ 'John Mettraux', 'Torsten Schoenebaum' ]
|
35
35
|
gem.rubyforge_project = 'rufus'
|
36
36
|
|
37
37
|
gem.test_file = 'test/test.rb'
|
@@ -41,7 +41,9 @@ One interface to various JSON ruby libs (yajl, json, json_pure, json-jruby, acti
|
|
41
41
|
gem.add_development_dependency 'activesupport'
|
42
42
|
#gem.add_development_dependency 'json_pure'
|
43
43
|
#gem.add_development_dependency 'json-jruby'
|
44
|
-
gem.add_development_dependency '
|
44
|
+
gem.add_development_dependency 'rake'
|
45
|
+
gem.add_development_dependency 'yard'
|
46
|
+
gem.add_development_dependency 'jeweler'
|
45
47
|
|
46
48
|
# gemspec spec : http://www.rubygems.org/read/chapter/20
|
47
49
|
end
|
data/lib/rufus/json.rb
CHANGED
@@ -26,20 +26,22 @@
|
|
26
26
|
module Rufus
|
27
27
|
module Json
|
28
28
|
|
29
|
-
VERSION = '0.2.
|
29
|
+
VERSION = '0.2.2'
|
30
30
|
|
31
31
|
# The JSON / JSON pure decoder
|
32
32
|
#
|
33
33
|
JSON = [
|
34
34
|
lambda { |o| o.to_json },
|
35
|
-
lambda { |s| ::JSON.parse(s, :max_nesting => nil) }
|
35
|
+
lambda { |s| ::JSON.parse(s, :max_nesting => nil) },
|
36
|
+
lambda { ::JSON::ParserError }
|
36
37
|
]
|
37
38
|
|
38
39
|
# The Rails ActiveSupport::JSON decoder
|
39
40
|
#
|
40
41
|
ACTIVE_SUPPORT = [
|
41
42
|
lambda { |o| ActiveSupport::JSON.encode(o) },
|
42
|
-
lambda { |s| ActiveSupport::JSON.decode(s) }
|
43
|
+
lambda { |s| ActiveSupport::JSON.decode(s) },
|
44
|
+
lambda { ::ActiveSupport::JSON::ParseError }
|
43
45
|
]
|
44
46
|
ACTIVE = ACTIVE_SUPPORT
|
45
47
|
|
@@ -47,12 +49,17 @@ module Json
|
|
47
49
|
#
|
48
50
|
YAJL = [
|
49
51
|
lambda { |o| Yajl::Encoder.encode(o) },
|
50
|
-
lambda { |s| Yajl::Parser.parse(s) }
|
52
|
+
lambda { |s| Yajl::Parser.parse(s) },
|
53
|
+
lambda { ::Yajl::ParseError }
|
51
54
|
]
|
52
55
|
|
53
56
|
# The "raise an exception because there's no backend" backend
|
54
57
|
#
|
55
|
-
NONE = [
|
58
|
+
NONE = [
|
59
|
+
lambda { |s| raise 'no JSON backend found' },
|
60
|
+
lambda { |s| raise 'no JSON backend found' },
|
61
|
+
lambda { raise 'no JSON backend found' }
|
62
|
+
]
|
56
63
|
|
57
64
|
# [Re-]Attempts to detect a JSON backend
|
58
65
|
#
|
@@ -110,7 +117,13 @@ module Json
|
|
110
117
|
#
|
111
118
|
def self.decode (s)
|
112
119
|
|
113
|
-
|
120
|
+
begin
|
121
|
+
|
122
|
+
@backend[1].call(s)
|
123
|
+
|
124
|
+
rescue @backend[2].call => e
|
125
|
+
raise ParserError, e.message
|
126
|
+
end
|
114
127
|
end
|
115
128
|
|
116
129
|
# Duplicates an object by turning it into JSON and back.
|
@@ -121,6 +134,10 @@ module Json
|
|
121
134
|
|
122
135
|
(@backend == NONE) ? Marshal.load(Marshal.dump(o)) : decode(encode(o))
|
123
136
|
end
|
137
|
+
|
138
|
+
# Wraps parser errors during decode
|
139
|
+
#
|
140
|
+
class ParserError < StandardError; end
|
124
141
|
end
|
125
142
|
end
|
126
143
|
|
data/rufus-json.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{rufus-json}
|
8
|
-
s.version = "0.2.
|
8
|
+
s.version = "0.2.2"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
-
s.authors = ["John Mettraux"]
|
12
|
-
s.date = %q{2010-05-
|
11
|
+
s.authors = ["John Mettraux", "Torsten Schoenebaum"]
|
12
|
+
s.date = %q{2010-05-26}
|
13
13
|
s.description = %q{
|
14
14
|
One interface to various JSON ruby libs (yajl, json, json_pure, json-jruby, active_support). Has a preference for yajl.
|
15
15
|
}
|
@@ -48,18 +48,24 @@ One interface to various JSON ruby libs (yajl, json, json_pure, json-jruby, acti
|
|
48
48
|
s.add_development_dependency(%q<json>, [">= 0"])
|
49
49
|
s.add_development_dependency(%q<yajl-ruby>, [">= 0"])
|
50
50
|
s.add_development_dependency(%q<activesupport>, [">= 0"])
|
51
|
+
s.add_development_dependency(%q<rake>, [">= 0"])
|
51
52
|
s.add_development_dependency(%q<yard>, [">= 0"])
|
53
|
+
s.add_development_dependency(%q<jeweler>, [">= 0"])
|
52
54
|
else
|
53
55
|
s.add_dependency(%q<json>, [">= 0"])
|
54
56
|
s.add_dependency(%q<yajl-ruby>, [">= 0"])
|
55
57
|
s.add_dependency(%q<activesupport>, [">= 0"])
|
58
|
+
s.add_dependency(%q<rake>, [">= 0"])
|
56
59
|
s.add_dependency(%q<yard>, [">= 0"])
|
60
|
+
s.add_dependency(%q<jeweler>, [">= 0"])
|
57
61
|
end
|
58
62
|
else
|
59
63
|
s.add_dependency(%q<json>, [">= 0"])
|
60
64
|
s.add_dependency(%q<yajl-ruby>, [">= 0"])
|
61
65
|
s.add_dependency(%q<activesupport>, [">= 0"])
|
66
|
+
s.add_dependency(%q<rake>, [">= 0"])
|
62
67
|
s.add_dependency(%q<yard>, [">= 0"])
|
68
|
+
s.add_dependency(%q<jeweler>, [">= 0"])
|
63
69
|
end
|
64
70
|
end
|
65
71
|
|
data/test/test.rb
CHANGED
@@ -66,6 +66,11 @@ class JsonTest < Test::Unit::TestCase
|
|
66
66
|
do_test_deep_nesting('json', Rufus::Json::JSON)
|
67
67
|
end
|
68
68
|
|
69
|
+
def test_parser_error_json
|
70
|
+
|
71
|
+
do_test_parser_error('json', Rufus::Json::JSON)
|
72
|
+
end
|
73
|
+
|
69
74
|
def test_decode_yajl
|
70
75
|
|
71
76
|
do_test_decode('yajl', Rufus::Json::YAJL)
|
@@ -86,6 +91,11 @@ class JsonTest < Test::Unit::TestCase
|
|
86
91
|
do_test_deep_nesting('yajl', Rufus::Json::YAJL)
|
87
92
|
end
|
88
93
|
|
94
|
+
def test_parser_error_yajl
|
95
|
+
|
96
|
+
do_test_parser_error('yajl', Rufus::Json::YAJL)
|
97
|
+
end
|
98
|
+
|
89
99
|
def test_decode_as
|
90
100
|
|
91
101
|
do_test_decode('active_support', Rufus::Json::ACTIVE)
|
@@ -162,5 +172,17 @@ class JsonTest < Test::Unit::TestCase
|
|
162
172
|
assert_equal(s, Rufus::Json.encode(h))
|
163
173
|
assert_equal(h, Rufus::Json.decode(s))
|
164
174
|
end
|
175
|
+
|
176
|
+
def do_test_parser_error (lib, cons)
|
177
|
+
|
178
|
+
require lib
|
179
|
+
Rufus::Json.backend = cons
|
180
|
+
|
181
|
+
s = '{foo:cx1234}'
|
182
|
+
|
183
|
+
assert_raise Rufus::Json::ParserError do
|
184
|
+
Rufus::Json.decode(s)
|
185
|
+
end
|
186
|
+
end
|
165
187
|
end
|
166
188
|
|
metadata
CHANGED
@@ -5,16 +5,17 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 2
|
8
|
-
-
|
9
|
-
version: 0.2.
|
8
|
+
- 2
|
9
|
+
version: 0.2.2
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- John Mettraux
|
13
|
+
- Torsten Schoenebaum
|
13
14
|
autorequire:
|
14
15
|
bindir: bin
|
15
16
|
cert_chain: []
|
16
17
|
|
17
|
-
date: 2010-05-
|
18
|
+
date: 2010-05-26 00:00:00 +09:00
|
18
19
|
default_executable:
|
19
20
|
dependencies:
|
20
21
|
- !ruby/object:Gem::Dependency
|
@@ -54,7 +55,7 @@ dependencies:
|
|
54
55
|
type: :development
|
55
56
|
version_requirements: *id003
|
56
57
|
- !ruby/object:Gem::Dependency
|
57
|
-
name:
|
58
|
+
name: rake
|
58
59
|
prerelease: false
|
59
60
|
requirement: &id004 !ruby/object:Gem::Requirement
|
60
61
|
requirements:
|
@@ -65,6 +66,30 @@ dependencies:
|
|
65
66
|
version: "0"
|
66
67
|
type: :development
|
67
68
|
version_requirements: *id004
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: yard
|
71
|
+
prerelease: false
|
72
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
73
|
+
requirements:
|
74
|
+
- - ">="
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
segments:
|
77
|
+
- 0
|
78
|
+
version: "0"
|
79
|
+
type: :development
|
80
|
+
version_requirements: *id005
|
81
|
+
- !ruby/object:Gem::Dependency
|
82
|
+
name: jeweler
|
83
|
+
prerelease: false
|
84
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
85
|
+
requirements:
|
86
|
+
- - ">="
|
87
|
+
- !ruby/object:Gem::Version
|
88
|
+
segments:
|
89
|
+
- 0
|
90
|
+
version: "0"
|
91
|
+
type: :development
|
92
|
+
version_requirements: *id006
|
68
93
|
description: "\n\
|
69
94
|
One interface to various JSON ruby libs (yajl, json, json_pure, json-jruby, active_support). Has a preference for yajl.\n "
|
70
95
|
email: jmettraux@gmail.com
|