multi_json 1.12.2 → 1.15.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: e41c68668d3cadb98cd4ceb6ab0b5e9cf7f6dc4c
4
- data.tar.gz: b9bfdd33477711d354185017e45f08466dadeba5
2
+ SHA256:
3
+ metadata.gz: ba3f1870ebd467a8356a8138d7bba83f224659a5cea2d4f9a845fa88e8d4934f
4
+ data.tar.gz: 89051067684a2f7f101dbc1b00e8cc4a417fdb9b829e476db6d90ea2cc4cf37b
5
5
  SHA512:
6
- metadata.gz: 8a3b5227ce0fb04cc4215e83aa6fb7f7946a480a08f02befb76485d823d84f8217afdd176702e7e14d59ed652811b4d9c0acc79ec17403d31fd3c489034f1ae4
7
- data.tar.gz: 79fc9ccf104b8bd2dde8e3881c7b408b48ec83c0ec84a1cd6f55dc7c10072fcaf200d8325770af8214f7f5576a907add9dedd2b3f80f490684ac126802f1eee9
6
+ metadata.gz: 3f317d2719838c2466a2ca066b25259a2653cf639198a9e47fc0c0365a8a02e8307feaa4392b445ae1f918c92c4cc7deb833e1c1945c4682cd3dac3d91af9789
7
+ data.tar.gz: 81b37aeb82f9744a93eec867a54e3a83537bedb6f29747818187b6fc27d599a6ee88f239db382f85ed840319e19452f43f09c29655ac664e9a4680bc33c335a8
@@ -1,3 +1,28 @@
1
+ 1.14.2
2
+ ------
3
+
4
+ * [Improve detection of json_gem adapter](https://github.com/intridea/multi_json/commit/62d54019b17ebf83b28c8deb871a02a122e7d9cf)
5
+
6
+ 1.14.1
7
+ ------
8
+
9
+ * [Fix a warning in Ruby 2.7](https://github.com/intridea/multi_json/commit/26a94ab8c78a394cc237e2ea292c1de4f6ed30d7)
10
+
11
+ 1.14.0
12
+ ------
13
+
14
+ * [Support Oj 3.x gem](https://github.com/intridea/multi_json/commit/5d8febdbebc428882811b90d514f3628617a61d5)
15
+
16
+ 1.13.1
17
+ ------
18
+
19
+ * [Fix missing stdlib set dependency in oj adapter](https://github.com/intridea/multi_json/commit/c4ff66e7bee6fb4f45e54429813d7fada1c152b8)
20
+
21
+ 1.13.0
22
+ -----
23
+
24
+ * [Make Oj adapter handle JSON::ParseError correctly](https://github.com/intridea/multi_json/commit/275e3ffd8169797c510d23d9ef5b8b07e64c3b42)
25
+
1
26
  1.12.2
2
27
  ------
3
28
 
data/README.md CHANGED
@@ -2,13 +2,7 @@
2
2
 
3
3
  [![Gem Version](http://img.shields.io/gem/v/multi_json.svg)][gem]
4
4
  [![Build Status](http://travis-ci.org/intridea/multi_json.svg)][travis]
5
- [![Dependency Status](http://img.shields.io/gemnasium/intridea/multi_json.svg)][gemnasium]
6
- [![Code Climate](http://img.shields.io/codeclimate/github/intridea/multi_json.svg)][codeclimate]
7
-
8
- [gem]: https://rubygems.org/gems/multi_json
9
- [travis]: http://travis-ci.org/intridea/multi_json
10
- [gemnasium]: https://gemnasium.com/intridea/multi_json
11
- [codeclimate]: https://codeclimate.com/github/intridea/multi_json
5
+ [![Code Climate](https://codeclimate.com/github/intridea/multi_json.svg)][codeclimate]
12
6
 
13
7
  Lots of Ruby libraries parse JSON and everyone has their favorite JSON coder.
14
8
  Instead of choosing a single JSON coder and forcing users of your library to be
@@ -51,38 +45,31 @@ load any. When loading, libraries are ordered by speed. First Oj, then Yajl,
51
45
  then the JSON gem, then JSON pure. If no other JSON library is available,
52
46
  MultiJSON falls back to [OkJson][], a simple, vendorable JSON parser.
53
47
 
54
- [okjson]: https://github.com/kr/okjson
55
-
56
48
  ## Supported JSON Engines
57
49
 
58
- * [Oj](https://github.com/ohler55/oj) Optimized JSON by Peter Ohler
59
- * [Yajl](https://github.com/brianmario/yajl-ruby) Yet Another JSON Library by Brian Lopez
60
- * [JSON](https://github.com/flori/json) The default JSON gem with C-extensions (ships with Ruby 1.9)
61
- * [JSON Pure](https://github.com/flori/json) A Ruby variant of the JSON gem
62
- * [NSJSONSerialization](https://developer.apple.com/library/ios/#documentation/Foundation/Reference/NSJSONSerialization_Class/Reference/Reference.html) Wrapper for Apple's NSJSONSerialization in the Cocoa Framework (MacRuby only)
63
- * [gson.rb](https://github.com/avsej/gson.rb) A Ruby wrapper for google-gson library (JRuby only)
64
- * [JrJackson](https://github.com/guyboertje/jrjackson) JRuby wrapper for Jackson (JRuby only)
50
+ * [Oj][oj] Optimized JSON by Peter Ohler
51
+ * [Yajl][yajl] Yet Another JSON Library by Brian Lopez
52
+ * [JSON][json-gem] The default JSON gem with C-extensions (ships with Ruby 1.9+)
53
+ * [JSON Pure][json-gem] A Ruby variant of the JSON gem
54
+ * [NSJSONSerialization][nsjson] Wrapper for Apple's NSJSONSerialization in the Cocoa Framework (MacRuby only)
55
+ * [gson.rb][gson] A Ruby wrapper for google-gson library (JRuby only)
56
+ * [JrJackson][jrjackson] JRuby wrapper for Jackson (JRuby only)
65
57
  * [OkJson][okjson] A simple, vendorable JSON parser
66
58
 
67
59
  ## Supported Ruby Versions
68
60
  This library aims to support and is [tested against][travis] the following Ruby
69
61
  implementations:
70
62
 
71
- * Ruby 1.8.7
72
- * Ruby 1.9.2
73
- * Ruby 1.9.3
74
- * Ruby 2.0.0
63
+ * Ruby 1.8
64
+ * Ruby 1.9
65
+ * Ruby 2.0
75
66
  * Ruby 2.1
76
- * Ruby 2.2.4
77
- * Ruby 2.3.1
78
- * Ruby 2.4.0
67
+ * Ruby 2.2
68
+ * Ruby 2.4
69
+ * Ruby 2.5
70
+ * Ruby 2.6
71
+ * Ruby 2.7
79
72
  * [JRuby][]
80
- * [Rubinius][]
81
- * [MacRuby][] (not tested on Travis CI)
82
-
83
- [jruby]: http://www.jruby.org/
84
- [rubinius]: http://rubini.us/
85
- [macruby]: http://www.macruby.org/
86
73
 
87
74
  If something doesn't work in one of these implementations, it's a bug.
88
75
 
@@ -112,11 +99,23 @@ Constraint][pvc] with two digits of precision. For example:
112
99
  spec.add_dependency 'multi_json', '~> 1.0'
113
100
  ```
114
101
 
115
- [semver]: http://semver.org/
116
- [pvc]: http://docs.rubygems.org/read/chapter/16#page74
117
-
118
102
  ## Copyright
119
- Copyright (c) 2010-2013 Michael Bleigh, Josh Kalderimis, Erik Michaels-Ober,
103
+ Copyright (c) 2010-2018 Michael Bleigh, Josh Kalderimis, Erik Michaels-Ober,
120
104
  and Pavel Pravosud. See [LICENSE][] for details.
121
105
 
106
+ [codeclimate]: https://codeclimate.com/github/intridea/multi_json
107
+ [gem]: https://rubygems.org/gems/multi_json
108
+ [gson]: https://github.com/avsej/gson.rb
109
+ [jrjackson]: https://github.com/guyboertje/jrjackson
110
+ [jruby]: http://www.jruby.org/
111
+ [json-gem]: https://github.com/flori/json
112
+ [json-pure]: https://github.com/flori/json
122
113
  [license]: LICENSE.md
114
+ [macruby]: http://www.macruby.org/
115
+ [nsjson]: https://developer.apple.com/library/ios/#documentation/Foundation/Reference/NSJSONSerialization_Class/Reference/Reference.html
116
+ [oj]: https://github.com/ohler55/oj
117
+ [okjson]: https://github.com/kr/okjson
118
+ [pvc]: http://docs.rubygems.org/read/chapter/16#page74
119
+ [semver]: http://semver.org/
120
+ [travis]: http://travis-ci.org/intridea/multi_json
121
+ [yajl]: https://github.com/brianmario/yajl-ruby
@@ -47,7 +47,7 @@ module MultiJson
47
47
  return :oj if defined?(::Oj)
48
48
  return :yajl if defined?(::Yajl)
49
49
  return :jr_jackson if defined?(::JrJackson)
50
- return :json_gem if defined?(::JSON::JSON_LOADED)
50
+ return :json_gem if defined?(::JSON::Ext::Parser)
51
51
  return :gson if defined?(::Gson)
52
52
 
53
53
  REQUIREMENT_MAP.each do |adapter, library|
@@ -1,3 +1,6 @@
1
+ # This adapter is here for legacy reasons. We can't really test it, so it's hard
2
+ # to tell if it's even working properly. If you're still using it, please
3
+ # consider migrating to any other adapter out there.
1
4
  framework 'Foundation'
2
5
  require 'multi_json/adapters/ok_json'
3
6
 
@@ -1,3 +1,4 @@
1
+ require 'set'
1
2
  require 'oj'
2
3
  require 'multi_json/adapter'
3
4
 
@@ -8,17 +9,54 @@ module MultiJson
8
9
  defaults :load, :mode => :strict, :symbolize_keys => false
9
10
  defaults :dump, :mode => :compat, :time_format => :ruby, :use_to_json => true
10
11
 
11
- ParseError = defined?(::Oj::ParseError) ? ::Oj::ParseError : SyntaxError
12
+ # In certain cases OJ gem may throw JSON::ParserError exception instead
13
+ # of its own class. Also, we can't expect ::JSON::ParserError and
14
+ # ::Oj::ParseError to always be defined, since it's often not the case.
15
+ # Because of this, we can't reference those classes directly and have to
16
+ # do string comparison instead. This will not catch subclasses, but it
17
+ # shouldn't be a problem since the library is not known to be using it
18
+ # (at least for now).
19
+ class ParseError < ::SyntaxError
20
+ WRAPPED_CLASSES = %w[Oj::ParseError JSON::ParserError].to_set.freeze
21
+
22
+ def self.===(exception)
23
+ case exception
24
+ when ::SyntaxError
25
+ true
26
+ else
27
+ WRAPPED_CLASSES.include?(exception.class.to_s)
28
+ end
29
+ end
30
+ end
12
31
 
13
32
  def load(string, options = {})
14
33
  options[:symbol_keys] = options[:symbolize_keys]
15
34
  ::Oj.load(string, options)
16
35
  end
17
36
 
18
- def dump(object, options = {})
19
- options.merge!(:indent => 2) if options[:pretty]
20
- options[:indent] = options[:indent].to_i if options[:indent]
21
- ::Oj.dump(object, options)
37
+ case ::Oj::VERSION
38
+ when /\A2\./
39
+ def dump(object, options = {})
40
+ options.merge!(:indent => 2) if options[:pretty]
41
+ options[:indent] = options[:indent].to_i if options[:indent]
42
+ ::Oj.dump(object, options)
43
+ end
44
+ when /\A3\./
45
+ PRETTY_STATE_PROTOTYPE = {
46
+ :indent => " ",
47
+ :space => " ",
48
+ :space_before => "",
49
+ :object_nl => "\n",
50
+ :array_nl => "\n",
51
+ :ascii_only => false,
52
+ }
53
+
54
+ def dump(object, options = {})
55
+ options.merge!(PRETTY_STATE_PROTOTYPE.dup) if options.delete(:pretty)
56
+ ::Oj.dump(object, options)
57
+ end
58
+ else
59
+ fail "Unsupported Oj version: #{::Oj::VERSION}"
22
60
  end
23
61
  end
24
62
  end
@@ -7,9 +7,9 @@ module MultiJson
7
7
  @load_cache = {}
8
8
  end
9
9
 
10
- def fetch(type, key)
10
+ def fetch(type, key, &block)
11
11
  cache = instance_variable_get("@#{type}_cache")
12
- cache.key?(key) ? cache[key] : write(cache, key, &Proc.new)
12
+ cache.key?(key) ? cache[key] : write(cache, key, &block)
13
13
  end
14
14
 
15
15
  private
@@ -1,8 +1,8 @@
1
1
  module MultiJson
2
2
  class Version
3
3
  MAJOR = 1 unless defined? MultiJson::Version::MAJOR
4
- MINOR = 12 unless defined? MultiJson::Version::MINOR
5
- PATCH = 2 unless defined? MultiJson::Version::PATCH
4
+ MINOR = 15 unless defined? MultiJson::Version::MINOR
5
+ PATCH = 0 unless defined? MultiJson::Version::PATCH
6
6
  PRE = nil unless defined? MultiJson::Version::PRE
7
7
 
8
8
  class << self
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: multi_json
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.12.2
4
+ version: 1.15.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael Bleigh
@@ -10,45 +10,37 @@ authors:
10
10
  - Pavel Pravosud
11
11
  autorequire:
12
12
  bindir: bin
13
- cert_chain:
14
- - |
15
- -----BEGIN CERTIFICATE-----
16
- MIIDcDCCAligAwIBAgIBATANBgkqhkiG9w0BAQUFADA/MQ4wDAYDVQQDDAVwYXZl
17
- bDEYMBYGCgmSJomT8ixkARkWCHByYXZvc3VkMRMwEQYKCZImiZPyLGQBGRYDY29t
18
- MB4XDTE3MDkwNTA0MjAxNVoXDTE4MDkwNTA0MjAxNVowPzEOMAwGA1UEAwwFcGF2
19
- ZWwxGDAWBgoJkiaJk/IsZAEZFghwcmF2b3N1ZDETMBEGCgmSJomT8ixkARkWA2Nv
20
- bTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMBI9gFjVGizTKJZmmim
21
- 8zHrJmSu7NGlL7HBWRhV7e/Qp2qdKtiG7TGGi9HRc6s6LmmJ7/v1EuPDsRCY1hnO
22
- 6aeiJKF02f9w/o1HSK1qnSvqzvXbMYmREbJygw5EQVSPfmtGhyMHwiq4DfwK+PnW
23
- dgNJYYIyf/FtWw+plgZapTZ3bj0EKswkLvFy12UyLhrLRu38JAezHfaeNs6Zf+Q1
24
- YgyAiPsbLeUjP+2k6QnFMM2gOJRZZq8ZDI5yFAr7+Q2AHqzb5I+BacYnODWuadXx
25
- qTbeYrgJS/20L+zoStoBpFlfSv8/BVu2ZwybxyU91WAFC5gnnNDymV6rKlza9gUJ
26
- 4lkCAwEAAaN3MHUwCQYDVR0TBAIwADALBgNVHQ8EBAMCBLAwHQYDVR0OBBYEFGjY
27
- 4LmBKPWO2jdS5KM1uNTR/xd8MB0GA1UdEQQWMBSBEnBhdmVsQHByYXZvc3VkLmNv
28
- bTAdBgNVHRIEFjAUgRJwYXZlbEBwcmF2b3N1ZC5jb20wDQYJKoZIhvcNAQEFBQAD
29
- ggEBAB5ZWFOjLnT6Klcr4UFvss5oW1Wtg0BdRCS5V7v8ZvnJ3mfD7rw+J3c7ylpT
30
- 9F4c4JLfJsg+FFbkDSETB1LfviGKPkpfjL3Uy1z6nWOko62XpFUiBydB9hnq0Fll
31
- pDshFjNeJVp6BgWXjVs9m8h1hRvGsy0WxEF/IQ+V5Dw7hvi+qg5K6eMoXvpv3OJh
32
- Io9NF6vsT7YYaUl+zobpp+tMYsAST801YnAa2RSSlsRKEMtsDFtC9oTQZhAhGqHb
33
- lnsOhB8m73/1c9sJkVBZl4lGniy6lnB4BIr+2+hTXDK5AjQJC1uwKG1etzwBuCkz
34
- 8dtH5+dv1G5BCpbYE2uIVLsl+LY=
35
- -----END CERTIFICATE-----
36
- date: 2017-09-05 00:00:00.000000000 Z
13
+ cert_chain: []
14
+ date: 2020-07-10 00:00:00.000000000 Z
37
15
  dependencies:
38
16
  - !ruby/object:Gem::Dependency
39
- name: bundler
17
+ name: rake
40
18
  requirement: !ruby/object:Gem::Requirement
41
19
  requirements:
42
20
  - - "~>"
43
21
  - !ruby/object:Gem::Version
44
- version: '1.0'
22
+ version: '10.5'
45
23
  type: :development
46
24
  prerelease: false
47
25
  version_requirements: !ruby/object:Gem::Requirement
48
26
  requirements:
49
27
  - - "~>"
50
28
  - !ruby/object:Gem::Version
51
- version: '1.0'
29
+ version: '10.5'
30
+ - !ruby/object:Gem::Dependency
31
+ name: rspec
32
+ requirement: !ruby/object:Gem::Requirement
33
+ requirements:
34
+ - - "~>"
35
+ - !ruby/object:Gem::Version
36
+ version: '3.9'
37
+ type: :development
38
+ prerelease: false
39
+ version_requirements: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - "~>"
42
+ - !ruby/object:Gem::Version
43
+ version: '3.9'
52
44
  description: A common interface to multiple JSON libraries, including Oj, Yajl, the
53
45
  JSON gem (with C-extensions), the pure-Ruby JSON gem, NSJSONSerialization, gson.rb,
54
46
  JrJackson, and OkJson.
@@ -83,10 +75,15 @@ files:
83
75
  - lib/multi_json/parse_error.rb
84
76
  - lib/multi_json/vendor/okjson.rb
85
77
  - lib/multi_json/version.rb
86
- homepage: http://github.com/intridea/multi_json
78
+ homepage: https://github.com/intridea/multi_json
87
79
  licenses:
88
80
  - MIT
89
- metadata: {}
81
+ metadata:
82
+ bug_tracker_uri: https://github.com/intridea/multi_json/issues
83
+ changelog_uri: https://github.com/intridea/multi_json/blob/v1.15.0/CHANGELOG.md
84
+ documentation_uri: https://www.rubydoc.info/gems/multi_json/1.15.0
85
+ source_code_uri: https://github.com/intridea/multi_json/tree/v1.15.0
86
+ wiki_uri: https://github.com/intridea/multi_json/wiki
90
87
  post_install_message:
91
88
  rdoc_options: []
92
89
  require_paths:
@@ -102,10 +99,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
102
99
  - !ruby/object:Gem::Version
103
100
  version: 1.3.5
104
101
  requirements: []
105
- rubyforge_project:
106
- rubygems_version: 2.6.13
102
+ rubygems_version: 3.0.3
107
103
  signing_key:
108
104
  specification_version: 4
109
105
  summary: A common interface to multiple JSON libraries.
110
106
  test_files: []
111
- has_rdoc:
Binary file
data.tar.gz.sig DELETED
Binary file
metadata.gz.sig DELETED
Binary file