rufus-json 0.2.2 → 0.2.3

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 CHANGED
@@ -2,6 +2,12 @@
2
2
  = rufus-json CHANGELOG.txt
3
3
 
4
4
 
5
+ == rufus-json - 0.2.3 released 2010/06/29
6
+
7
+ - made sure we're able to parse any JSON string
8
+ ('json' couldn't parse "true", '"string"' or "12345" on their own)
9
+
10
+
5
11
  == rufus-json - 0.2.2 released 2010/05/26
6
12
 
7
13
  - Unified Rufus::Json::ParserError (Torsten Schoenebaum)
data/lib/rufus/json.rb CHANGED
@@ -26,13 +26,13 @@
26
26
  module Rufus
27
27
  module Json
28
28
 
29
- VERSION = '0.2.2'
29
+ VERSION = '0.2.3'
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).first },
36
36
  lambda { ::JSON::ParserError }
37
37
  ]
38
38
 
@@ -40,8 +40,9 @@ module Json
40
40
  #
41
41
  ACTIVE_SUPPORT = [
42
42
  lambda { |o| ActiveSupport::JSON.encode(o) },
43
- lambda { |s| ActiveSupport::JSON.decode(s) },
44
- lambda { ::ActiveSupport::JSON::ParseError }
43
+ lambda { |s| decode_e(s) || ActiveSupport::JSON.decode(s) },
44
+ #lambda { ::ActiveSupport::JSON::ParseError }
45
+ lambda { RuntimeError }
45
46
  ]
46
47
  ACTIVE = ACTIVE_SUPPORT
47
48
 
@@ -55,7 +56,7 @@ module Json
55
56
 
56
57
  # The "raise an exception because there's no backend" backend
57
58
  #
58
- NONE = [
59
+ NONE = [
59
60
  lambda { |s| raise 'no JSON backend found' },
60
61
  lambda { |s| raise 'no JSON backend found' },
61
62
  lambda { raise 'no JSON backend found' }
@@ -135,6 +136,15 @@ module Json
135
136
  (@backend == NONE) ? Marshal.load(Marshal.dump(o)) : decode(encode(o))
136
137
  end
137
138
 
139
+ E_REGEX = /^\d+(\.\d+)?[eE][+-]?\d+$/
140
+
141
+ # Let's ActiveSupport do the E number notation.
142
+ #
143
+ def self.decode_e (s)
144
+
145
+ s.match(E_REGEX) ? eval(s) : false
146
+ end
147
+
138
148
  # Wraps parser errors during decode
139
149
  #
140
150
  class ParserError < StandardError; end
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.2"
8
+ s.version = "0.2.3"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["John Mettraux", "Torsten Schoenebaum"]
12
- s.date = %q{2010-05-26}
12
+ s.date = %q{2010-06-29}
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
  }
data/test/test.rb CHANGED
@@ -71,6 +71,11 @@ class JsonTest < Test::Unit::TestCase
71
71
  do_test_parser_error('json', Rufus::Json::JSON)
72
72
  end
73
73
 
74
+ def test_json_atoms_json
75
+
76
+ do_test_json_atoms('json', Rufus::Json::JSON)
77
+ end
78
+
74
79
  def test_decode_yajl
75
80
 
76
81
  do_test_decode('yajl', Rufus::Json::YAJL)
@@ -96,6 +101,11 @@ class JsonTest < Test::Unit::TestCase
96
101
  do_test_parser_error('yajl', Rufus::Json::YAJL)
97
102
  end
98
103
 
104
+ def test_json_atoms_yajl
105
+
106
+ do_test_json_atoms('yajl', Rufus::Json::YAJL)
107
+ end
108
+
99
109
  def test_decode_as
100
110
 
101
111
  do_test_decode('active_support', Rufus::Json::ACTIVE)
@@ -116,6 +126,11 @@ class JsonTest < Test::Unit::TestCase
116
126
  do_test_deep_nesting('active_support', Rufus::Json::ACTIVE)
117
127
  end
118
128
 
129
+ def test_json_atoms_as
130
+
131
+ do_test_json_atoms('active_support', Rufus::Json::ACTIVE)
132
+ end
133
+
119
134
  protected
120
135
 
121
136
  def do_test_decode (lib, cons)
@@ -184,5 +199,25 @@ class JsonTest < Test::Unit::TestCase
184
199
  Rufus::Json.decode(s)
185
200
  end
186
201
  end
202
+
203
+ def do_test_json_atoms (lib, cons)
204
+
205
+ require lib
206
+ Rufus::Json.backend = cons
207
+
208
+ [
209
+ [ '1', 1 ],
210
+ [ '1.1', 1.1 ],
211
+ [ '1.1e10', 1.1e10 ],
212
+ [ '1.1E10', 1.1e10 ],
213
+ [ '1.1E-10', 1.1e-10 ],
214
+ [ '"a"', 'a' ],
215
+ [ 'true', true ],
216
+ [ 'false', false ],
217
+ [ 'null', nil ]
218
+ ].each do |s, v|
219
+ assert_equal v, Rufus::Json.decode(s)
220
+ end
221
+ end
187
222
  end
188
223
 
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 2
8
- - 2
9
- version: 0.2.2
8
+ - 3
9
+ version: 0.2.3
10
10
  platform: ruby
11
11
  authors:
12
12
  - John Mettraux
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-05-26 00:00:00 +09:00
18
+ date: 2010-06-29 00:00:00 +09:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency