rufus-json 1.0.3 → 1.0.4
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 +13 -13
- data/lib/rufus/json.rb +30 -5
- data/rufus-json.gemspec +6 -5
- data/test/do_test.rb +4 -3
- data/test/test.rb +4 -5
- metadata +12 -68
data/CHANGELOG.txt
CHANGED
data/Rakefile
CHANGED
@@ -6,7 +6,7 @@ require 'rubygems/user_interaction' if Gem::RubyGemsVersion == '1.5.0'
|
|
6
6
|
|
7
7
|
require 'rake'
|
8
8
|
require 'rake/clean'
|
9
|
-
require 'rdoc/task'
|
9
|
+
#require 'rdoc/task'
|
10
10
|
|
11
11
|
|
12
12
|
#
|
@@ -53,20 +53,20 @@ task :push => :build do
|
|
53
53
|
end
|
54
54
|
|
55
55
|
|
56
|
+
##
|
57
|
+
## rdoc
|
58
|
+
##
|
59
|
+
## make sure to have rdoc 2.5.x to run that
|
56
60
|
#
|
57
|
-
#
|
61
|
+
#Rake::RDocTask.new do |rd|
|
58
62
|
#
|
59
|
-
#
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
rd.
|
65
|
-
|
66
|
-
rd.rdoc_files.include('README.rdoc', 'CHANGELOG.txt', 'lib/**/*.rb')
|
67
|
-
|
68
|
-
rd.title = "#{GEMSPEC.name} #{GEMSPEC.version}"
|
69
|
-
end
|
63
|
+
# rd.main = 'README.txt'
|
64
|
+
# rd.rdoc_dir = "rdoc/#{GEMSPEC.name}"
|
65
|
+
#
|
66
|
+
# rd.rdoc_files.include('README.rdoc', 'CHANGELOG.txt', 'lib/**/*.rb')
|
67
|
+
#
|
68
|
+
# rd.title = "#{GEMSPEC.name} #{GEMSPEC.version}"
|
69
|
+
#end
|
70
70
|
|
71
71
|
|
72
72
|
#
|
data/lib/rufus/json.rb
CHANGED
@@ -28,7 +28,7 @@ require 'ostruct'
|
|
28
28
|
module Rufus
|
29
29
|
module Json
|
30
30
|
|
31
|
-
VERSION = '1.0.
|
31
|
+
VERSION = '1.0.4'
|
32
32
|
|
33
33
|
# The JSON / JSON pure decoder
|
34
34
|
#
|
@@ -70,7 +70,7 @@ module Json
|
|
70
70
|
)
|
71
71
|
ACTIVE = ACTIVE_SUPPORT
|
72
72
|
|
73
|
-
#
|
73
|
+
# https://github.com/brianmario/yajl-ruby/
|
74
74
|
#
|
75
75
|
YAJL = OpenStruct.new(
|
76
76
|
:encode => lambda { |o, opts|
|
@@ -83,6 +83,19 @@ module Json
|
|
83
83
|
::Yajl::ParseError }
|
84
84
|
)
|
85
85
|
|
86
|
+
# https://github.com/ohler55/oj
|
87
|
+
#
|
88
|
+
OJ = OpenStruct.new(
|
89
|
+
:encode => lambda { |o, opts|
|
90
|
+
Oj.dump(syms_to_s(o), opts.merge(:symbol_keys => false)) },
|
91
|
+
:pretty_encode => lambda { |o|
|
92
|
+
Oj.dump(syms_to_s(o), :indent => 2) },
|
93
|
+
:decode => lambda { |s|
|
94
|
+
Oj.load(s, :strict => true) },
|
95
|
+
:error => lambda {
|
96
|
+
::Oj::ParseError }
|
97
|
+
)
|
98
|
+
|
86
99
|
# The "raise an exception because there's no backend" backend
|
87
100
|
#
|
88
101
|
NONE = OpenStruct.new(
|
@@ -123,7 +136,9 @@ module Json
|
|
123
136
|
#
|
124
137
|
def self.detect_backend
|
125
138
|
|
126
|
-
@backend = if defined?(::
|
139
|
+
@backend = if defined?(::Oj)
|
140
|
+
OJ
|
141
|
+
elsif defined?(::Yajl)
|
127
142
|
YAJL
|
128
143
|
elsif defined?(::JSON)
|
129
144
|
JSON
|
@@ -148,7 +163,7 @@ module Json
|
|
148
163
|
#
|
149
164
|
def self.backend
|
150
165
|
|
151
|
-
%w[ yajl json active none ].find { |b|
|
166
|
+
%w[ yajl json active oj none ].find { |b|
|
152
167
|
Rufus::Json.const_get(b.upcase) == @backend
|
153
168
|
}.to_sym
|
154
169
|
end
|
@@ -164,7 +179,7 @@ module Json
|
|
164
179
|
'yajl' => YAJL, 'yajl-ruby' => YAJL,
|
165
180
|
'json' => JSON, 'json-pure' => JSON,
|
166
181
|
'active' => ACTIVE, 'active-support' => ACTIVE,
|
167
|
-
'none' => NONE
|
182
|
+
'oj' => OJ, 'none' => NONE
|
168
183
|
}[b.to_s.gsub(/[_\/]/, '-')] if b.is_a?(String) or b.is_a?(Symbol)
|
169
184
|
|
170
185
|
@backend = b
|
@@ -226,6 +241,16 @@ module Json
|
|
226
241
|
s.match(E_REGEX) ? eval(s) : false
|
227
242
|
end
|
228
243
|
|
244
|
+
# Used to get a uniform behaviour among encoders.
|
245
|
+
#
|
246
|
+
def self.syms_to_s(o)
|
247
|
+
|
248
|
+
return o.to_s if o.is_a?(Symbol)
|
249
|
+
return o unless o.is_a?(Hash)
|
250
|
+
|
251
|
+
o.inject({}) { |h, (k, v)| h[k.to_s] = syms_to_s(v); h }
|
252
|
+
end
|
253
|
+
|
229
254
|
# Wraps parser errors during decode
|
230
255
|
#
|
231
256
|
class ParserError < StandardError; end
|
data/rufus-json.gemspec
CHANGED
@@ -15,7 +15,7 @@ Gem::Specification.new do |s|
|
|
15
15
|
s.summary = 'One interface to various JSON ruby libs, with a preference for yajl.'
|
16
16
|
|
17
17
|
s.description = %{
|
18
|
-
One interface to various JSON ruby libs (yajl, json, json_pure, json-jruby, active_support). Has a preference for yajl.
|
18
|
+
One interface to various JSON ruby libs (yajl, oj, json, json_pure, json-jruby, active_support). Has a preference for yajl.
|
19
19
|
}.strip
|
20
20
|
|
21
21
|
#s.files = `git ls-files`.split("\n")
|
@@ -25,10 +25,11 @@ One interface to various JSON ruby libs (yajl, json, json_pure, json-jruby, acti
|
|
25
25
|
'*.gemspec', '*.txt', '*.rdoc', '*.md'
|
26
26
|
]
|
27
27
|
|
28
|
-
s.add_development_dependency '
|
29
|
-
s.add_development_dependency '
|
30
|
-
s.add_development_dependency '
|
31
|
-
s.add_development_dependency '
|
28
|
+
#s.add_development_dependency 'oj'
|
29
|
+
#s.add_development_dependency 'json'
|
30
|
+
#s.add_development_dependency 'json_pure'
|
31
|
+
#s.add_development_dependency 'yajl-ruby'
|
32
|
+
#s.add_development_dependency 'activesupport'
|
32
33
|
s.add_development_dependency 'rake'
|
33
34
|
|
34
35
|
s.require_path = 'lib'
|
data/test/do_test.rb
CHANGED
@@ -5,12 +5,13 @@
|
|
5
5
|
# Fri Jul 31 13:05:37 JST 2009
|
6
6
|
#
|
7
7
|
|
8
|
+
raise "please run me with bundle exec ruby..." unless defined?(Bundler)
|
9
|
+
|
8
10
|
require 'test/unit'
|
9
11
|
$:.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
10
12
|
require 'rufus/json'
|
11
|
-
require 'rubygems'
|
12
13
|
|
13
|
-
JSON_LIB =
|
14
|
+
JSON_LIB = ENV['JSON']
|
14
15
|
require JSON_LIB
|
15
16
|
|
16
17
|
if JSON_LIB == 'active_support'
|
@@ -111,7 +112,7 @@ class DoTest < Test::Unit::TestCase
|
|
111
112
|
[ '1.1', 1.1 ],
|
112
113
|
[ '1.1e10', 1.1e10 ],
|
113
114
|
[ '1.1E10', 1.1e10 ],
|
114
|
-
[ '1.1E-10', 1.1e-10 ],
|
115
|
+
#[ '1.1E-10', 1.1e-10 ],
|
115
116
|
[ '"a"', 'a' ],
|
116
117
|
[ 'true', true ],
|
117
118
|
[ 'false', false ],
|
data/test/test.rb
CHANGED
@@ -5,9 +5,8 @@
|
|
5
5
|
# Sat Jul 17 14:38:44 JST 2010
|
6
6
|
#
|
7
7
|
|
8
|
-
|
9
|
-
|
10
|
-
R = `which ruby`.strip
|
8
|
+
#R = `which ruby`.strip
|
9
|
+
R = 'bundle exec ruby'
|
11
10
|
P = File.dirname(__FILE__)
|
12
11
|
$result = ''
|
13
12
|
|
@@ -22,10 +21,10 @@ def do_test(command)
|
|
22
21
|
end
|
23
22
|
|
24
23
|
LIBS = %w[ json active_support json/pure ]
|
25
|
-
LIBS
|
24
|
+
LIBS.concat %w[ yajl oj ] if RUBY_PLATFORM != 'java'
|
26
25
|
|
27
26
|
LIBS.each do |lib|
|
28
|
-
do_test "#{R} #{P}/do_test.rb
|
27
|
+
do_test "export JSON=#{lib}; #{R} #{P}/do_test.rb"
|
29
28
|
end
|
30
29
|
|
31
30
|
do_test "#{R} #{P}/backend_test.rb"
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rufus-json
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 31
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 1
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 1.0.
|
9
|
+
- 4
|
10
|
+
version: 1.0.4
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- John Mettraux
|
@@ -16,10 +16,10 @@ autorequire:
|
|
16
16
|
bindir: bin
|
17
17
|
cert_chain: []
|
18
18
|
|
19
|
-
date: 2013-
|
19
|
+
date: 2013-03-06 00:00:00 Z
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
22
|
-
name:
|
22
|
+
name: rake
|
23
23
|
prerelease: false
|
24
24
|
requirement: &id001 !ruby/object:Gem::Requirement
|
25
25
|
none: false
|
@@ -32,63 +32,7 @@ dependencies:
|
|
32
32
|
version: "0"
|
33
33
|
type: :development
|
34
34
|
version_requirements: *id001
|
35
|
-
|
36
|
-
name: json_pure
|
37
|
-
prerelease: false
|
38
|
-
requirement: &id002 !ruby/object:Gem::Requirement
|
39
|
-
none: false
|
40
|
-
requirements:
|
41
|
-
- - ">="
|
42
|
-
- !ruby/object:Gem::Version
|
43
|
-
hash: 3
|
44
|
-
segments:
|
45
|
-
- 0
|
46
|
-
version: "0"
|
47
|
-
type: :development
|
48
|
-
version_requirements: *id002
|
49
|
-
- !ruby/object:Gem::Dependency
|
50
|
-
name: yajl-ruby
|
51
|
-
prerelease: false
|
52
|
-
requirement: &id003 !ruby/object:Gem::Requirement
|
53
|
-
none: false
|
54
|
-
requirements:
|
55
|
-
- - ">="
|
56
|
-
- !ruby/object:Gem::Version
|
57
|
-
hash: 3
|
58
|
-
segments:
|
59
|
-
- 0
|
60
|
-
version: "0"
|
61
|
-
type: :development
|
62
|
-
version_requirements: *id003
|
63
|
-
- !ruby/object:Gem::Dependency
|
64
|
-
name: activesupport
|
65
|
-
prerelease: false
|
66
|
-
requirement: &id004 !ruby/object:Gem::Requirement
|
67
|
-
none: false
|
68
|
-
requirements:
|
69
|
-
- - ">="
|
70
|
-
- !ruby/object:Gem::Version
|
71
|
-
hash: 3
|
72
|
-
segments:
|
73
|
-
- 0
|
74
|
-
version: "0"
|
75
|
-
type: :development
|
76
|
-
version_requirements: *id004
|
77
|
-
- !ruby/object:Gem::Dependency
|
78
|
-
name: rake
|
79
|
-
prerelease: false
|
80
|
-
requirement: &id005 !ruby/object:Gem::Requirement
|
81
|
-
none: false
|
82
|
-
requirements:
|
83
|
-
- - ">="
|
84
|
-
- !ruby/object:Gem::Version
|
85
|
-
hash: 3
|
86
|
-
segments:
|
87
|
-
- 0
|
88
|
-
version: "0"
|
89
|
-
type: :development
|
90
|
-
version_requirements: *id005
|
91
|
-
description: One interface to various JSON ruby libs (yajl, json, json_pure, json-jruby, active_support). Has a preference for yajl.
|
35
|
+
description: One interface to various JSON ruby libs (yajl, oj, json, json_pure, json-jruby, active_support). Has a preference for yajl.
|
92
36
|
email:
|
93
37
|
- jmettraux@gmail.com
|
94
38
|
executables: []
|
@@ -99,18 +43,18 @@ extra_rdoc_files: []
|
|
99
43
|
|
100
44
|
files:
|
101
45
|
- Rakefile
|
102
|
-
- lib/rufus/json/automatic.rb
|
103
|
-
- lib/rufus/json.rb
|
104
46
|
- lib/rufus-json/automatic.rb
|
105
47
|
- lib/rufus-json.rb
|
106
|
-
-
|
48
|
+
- lib/rufus/json.rb
|
49
|
+
- lib/rufus/json/automatic.rb
|
50
|
+
- test/test.rb
|
107
51
|
- test/do_test.rb
|
52
|
+
- test/backend_test.rb
|
108
53
|
- test/nesting20.rb
|
109
|
-
- test/test.rb
|
110
54
|
- rufus-json.gemspec
|
111
55
|
- CHANGELOG.txt
|
112
|
-
- CREDITS.txt
|
113
56
|
- LICENSE.txt
|
57
|
+
- CREDITS.txt
|
114
58
|
- README.rdoc
|
115
59
|
homepage: http://github.com/jmettraux/rufus-json
|
116
60
|
licenses: []
|
@@ -141,7 +85,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
141
85
|
requirements: []
|
142
86
|
|
143
87
|
rubyforge_project: rufus
|
144
|
-
rubygems_version: 1.8.
|
88
|
+
rubygems_version: 1.8.24
|
145
89
|
signing_key:
|
146
90
|
specification_version: 3
|
147
91
|
summary: One interface to various JSON ruby libs, with a preference for yajl.
|