rufus-json 1.0.1 → 1.0.2

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG.txt CHANGED
@@ -2,6 +2,9 @@
2
2
  = rufus-json CHANGELOG.txt
3
3
 
4
4
 
5
+ == rufus-json - 1.0.2 not yet released
6
+
7
+
5
8
  == rufus-json - 1.0.1 released 2011/06/01
6
9
 
7
10
  - require 'rufus-json/automatic' ('one require' rufus-json)
data/LICENSE.txt CHANGED
@@ -1,5 +1,5 @@
1
1
 
2
- Copyright (c) 2009-2011, John Mettraux, jmettraux@gmail.com
2
+ Copyright (c) 2009-2012, John Mettraux, jmettraux@gmail.com
3
3
 
4
4
  Permission is hereby granted, free of charge, to any person obtaining a copy
5
5
  of this software and associated documentation files (the "Software"), to deal
data/README.rdoc CHANGED
@@ -91,6 +91,7 @@ http://rufus.rubyforge.org
91
91
  == authors
92
92
 
93
93
  * John Mettraux, http://jmettraux.wordpress.com/
94
+ * Torsten Schoenebaum, https://github.com/tosch
94
95
 
95
96
 
96
97
  == license
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 'rake/rdoctask'
9
+ require 'rdoc/task'
10
10
 
11
11
 
12
12
  #
data/lib/rufus/json.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  #--
2
- # Copyright (c) 2009-2011, John Mettraux, jmettraux@gmail.com
2
+ # Copyright (c) 2009-2012, John Mettraux, jmettraux@gmail.com
3
3
  #
4
4
  # Permission is hereby granted, free of charge, to any person obtaining a copy
5
5
  # of this software and associated documentation files (the "Software"), to deal
@@ -22,16 +22,18 @@
22
22
  # Made in Japan.
23
23
  #++
24
24
 
25
+ require 'ostruct'
26
+
25
27
 
26
28
  module Rufus
27
29
  module Json
28
30
 
29
- VERSION = '1.0.1'
31
+ VERSION = '1.0.2'
30
32
 
31
33
  # The JSON / JSON pure decoder
32
34
  #
33
- JSON = [
34
- lambda { |o, opts|
35
+ JSON = OpenStruct.new(
36
+ :encode => lambda { |o, opts|
35
37
  opts[:max_nesting] = false unless opts.has_key?(:max_nesting)
36
38
  if o.is_a?(Hash) or o.is_a?(Array)
37
39
  ::JSON.generate(o, opts)
@@ -39,35 +41,52 @@ module Json
39
41
  ::JSON.generate([ o ], opts).strip[1..-2]
40
42
  end
41
43
  },
42
- lambda { |s| ::JSON.parse("[#{s}]", :max_nesting => nil).first },
43
- lambda { ::JSON::ParserError }
44
- ]
44
+ :pretty_encode => lambda { |o|
45
+ encode(
46
+ o,
47
+ :indent => ' ', :object_nl => "\n", :array_nl => "\n", :space => ' ')
48
+ },
49
+ :decode => lambda { |s|
50
+ ::JSON.parse("[#{s}]", :max_nesting => nil).first },
51
+ :error => lambda {
52
+ ::JSON::ParserError }
53
+ )
45
54
 
46
55
  # The Rails ActiveSupport::JSON decoder
47
56
  #
48
- ACTIVE_SUPPORT = [
49
- lambda { |o, opts| ActiveSupport::JSON.encode(o, opts) },
50
- lambda { |s| decode_e(s) || ActiveSupport::JSON.decode(s) },
51
- #lambda { ::ActiveSupport::JSON::ParseError }
52
- lambda { RuntimeError }
53
- ]
57
+ ACTIVE_SUPPORT = OpenStruct.new(
58
+ :encode => lambda { |o, opts|
59
+ ActiveSupport::JSON.encode(o, opts) },
60
+ :pretty_encode => lambda { |o|
61
+ ActiveSupport::JSON.encode(o) },
62
+ :decode => lambda { |s|
63
+ decode_e(s) || ActiveSupport::JSON.decode(s) },
64
+ :error => lambda {
65
+ RuntimeError }
66
+ )
54
67
  ACTIVE = ACTIVE_SUPPORT
55
68
 
56
69
  # http://github.com/brianmario/yajl-ruby/
57
70
  #
58
- YAJL = [
59
- lambda { |o, opts| Yajl::Encoder.encode(o, opts) },
60
- lambda { |s| Yajl::Parser.parse(s) },
61
- lambda { ::Yajl::ParseError }
62
- ]
71
+ YAJL = OpenStruct.new(
72
+ :encode => lambda { |o, opts|
73
+ Yajl::Encoder.encode(o, opts) },
74
+ :pretty_encode => lambda { |o|
75
+ Yajl::Encoder.encode(o, :pretty => true, :indent => ' ') },
76
+ :decode => lambda { |s|
77
+ Yajl::Parser.parse(s) },
78
+ :error => lambda {
79
+ ::Yajl::ParseError }
80
+ )
63
81
 
64
82
  # The "raise an exception because there's no backend" backend
65
83
  #
66
- NONE = [
67
- lambda { |o, opts| raise 'no JSON backend found' },
68
- lambda { |s| raise 'no JSON backend found' },
69
- lambda { raise 'no JSON backend found' }
70
- ]
84
+ NONE = OpenStruct.new(
85
+ :encode => lambda { |o, opts| raise 'no JSON backend found' },
86
+ :pretty_encode => lambda { |o| raise 'no JSON backend found' },
87
+ :decode => lambda { |s| raise 'no JSON backend found' },
88
+ :error => lambda { raise 'no JSON backend found' }
89
+ )
71
90
 
72
91
  # In the given order, attempts to load a json lib and sets it as the
73
92
  # backend of rufus-json.
@@ -151,21 +170,14 @@ module Json
151
170
  #
152
171
  def self.encode(o, opts={})
153
172
 
154
- @backend[0].call(o, opts)
173
+ @backend.encode[o, opts]
155
174
  end
156
175
 
157
176
  # Pretty encoding
158
177
  #
159
178
  def self.pretty_encode(o)
160
179
 
161
- case @backend
162
- when JSON
163
- encode(o, :indent => ' ', :object_nl => "\n", :array_nl => "\n", :space => ' ')
164
- when YAJL
165
- encode(o, :pretty => true, :indent => ' ')
166
- else
167
- encode(o)
168
- end
180
+ @backend.pretty_encode[o]
169
181
  end
170
182
 
171
183
  # An alias for .encode
@@ -179,9 +191,9 @@ module Json
179
191
  #
180
192
  def self.decode(s)
181
193
 
182
- @backend[1].call(s)
194
+ @backend.decode[s]
183
195
 
184
- rescue @backend[2].call => e
196
+ rescue @backend.error[] => e
185
197
  raise ParserError.new(e.message)
186
198
  end
187
199
 
@@ -1,5 +1,5 @@
1
1
  #--
2
- # Copyright (c) 2009-2011, John Mettraux, jmettraux@gmail.com
2
+ # Copyright (c) 2009-2012, John Mettraux, jmettraux@gmail.com
3
3
  #
4
4
  # Permission is hereby granted, free of charge, to any person obtaining a copy
5
5
  # of this software and associated documentation files (the "Software"), to deal
data/rufus-json.gemspec CHANGED
@@ -1,19 +1,18 @@
1
- # encoding: utf-8
2
-
3
- require File.join(File.dirname(__FILE__), 'lib/rufus/json')
4
- # bundler wants absolute path
5
-
6
1
 
7
2
  Gem::Specification.new do |s|
8
3
 
9
4
  s.name = 'rufus-json'
10
- s.version = Rufus::Json::VERSION
5
+
6
+ s.version = File.read(
7
+ File.expand_path('../lib/rufus/json.rb', __FILE__)
8
+ ).match(/ VERSION *= *['"]([^'"]+)/)[1]
9
+
11
10
  s.platform = Gem::Platform::RUBY
12
11
  s.authors = [ 'John Mettraux', 'Torsten Schoenebaum' ]
13
12
  s.email = [ 'jmettraux@gmail.com' ]
14
13
  s.homepage = 'http://github.com/jmettraux/rufus-json'
15
14
  s.rubyforge_project = 'rufus'
16
- s.summary = 'One interface to various JSON ruby libs (yajl, json, json_pure, json-jruby, active_support). Has a preference for yajl.'
15
+ s.summary = 'One interface to various JSON ruby libs, with a preference for yajl.'
17
16
 
18
17
  s.description = %{
19
18
  One interface to various JSON ruby libs (yajl, json, json_pure, json-jruby, active_support). Has a preference for yajl.
data/test/test.rb CHANGED
@@ -21,7 +21,10 @@ def do_test(command)
21
21
  $result << ($?.exitstatus == 0 ? 'o' : 'X')
22
22
  end
23
23
 
24
- %w[ json active_support yajl json/pure ].each do |lib|
24
+ LIBS = %w[ json active_support json/pure ]
25
+ LIBS << 'yajl' if RUBY_PLATFORM != 'java'
26
+
27
+ LIBS.each do |lib|
25
28
  do_test "#{R} #{P}/do_test.rb #{lib}"
26
29
  end
27
30
 
@@ -29,6 +32,8 @@ do_test "#{R} #{P}/backend_test.rb"
29
32
 
30
33
  puts
31
34
  puts
35
+ puts '-' * 80
32
36
  puts $result
37
+ puts '-' * 80
33
38
  puts
34
39
 
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: 21
4
+ hash: 19
5
5
  prerelease:
6
6
  segments:
7
7
  - 1
8
8
  - 0
9
- - 1
10
- version: 1.0.1
9
+ - 2
10
+ version: 1.0.2
11
11
  platform: ruby
12
12
  authors:
13
13
  - John Mettraux
@@ -16,8 +16,7 @@ autorequire:
16
16
  bindir: bin
17
17
  cert_chain: []
18
18
 
19
- date: 2011-06-01 00:00:00 +09:00
20
- default_executable:
19
+ date: 2012-05-24 00:00:00 Z
21
20
  dependencies:
22
21
  - !ruby/object:Gem::Dependency
23
22
  name: json
@@ -113,7 +112,6 @@ files:
113
112
  - CREDITS.txt
114
113
  - LICENSE.txt
115
114
  - README.rdoc
116
- has_rdoc: true
117
115
  homepage: http://github.com/jmettraux/rufus-json
118
116
  licenses: []
119
117
 
@@ -143,9 +141,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
143
141
  requirements: []
144
142
 
145
143
  rubyforge_project: rufus
146
- rubygems_version: 1.5.0
144
+ rubygems_version: 1.8.15
147
145
  signing_key:
148
146
  specification_version: 3
149
- summary: One interface to various JSON ruby libs (yajl, json, json_pure, json-jruby, active_support). Has a preference for yajl.
147
+ summary: One interface to various JSON ruby libs, with a preference for yajl.
150
148
  test_files: []
151
149