multi_json 1.11.3 → 1.12.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/CHANGELOG.md +5 -0
- data/lib/multi_json.rb +3 -0
- data/lib/multi_json/adapter.rb +15 -2
- data/lib/multi_json/adapters/oj.rb +1 -1
- data/lib/multi_json/options.rb +2 -0
- data/lib/multi_json/options_cache.rb +15 -0
- data/lib/multi_json/version.rb +2 -2
- metadata +3 -2
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 26886d50e3fa311fe1b33a1d8ebaad6c89d372ec
|
4
|
+
data.tar.gz: 41b704e0b93ce7211fa41e22a547e80d89ff067c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ed17f8464c34c9dd2feff7decdd12c7c3161434a124c82151c3c167fdcb9d8ff5df5b02eb348d6c06eafe1ef717831780c607432b7f33a192b0c18c329c88558
|
7
|
+
data.tar.gz: a0cf57eb1318c0d6fe9c790cc82616172be1f6e18d4e7cac8ac100c468455b0a2fa5f078caa44e7de11f605c7795358f443a4145dcee6070450d699ed9c0955e
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data.tar.gz.sig
CHANGED
Binary file
|
data/CHANGELOG.md
CHANGED
data/lib/multi_json.rb
CHANGED
@@ -2,6 +2,7 @@ require 'multi_json/options'
|
|
2
2
|
require 'multi_json/version'
|
3
3
|
require 'multi_json/adapter_error'
|
4
4
|
require 'multi_json/parse_error'
|
5
|
+
require 'multi_json/options_cache'
|
5
6
|
|
6
7
|
module MultiJson
|
7
8
|
include Options
|
@@ -88,6 +89,8 @@ module MultiJson
|
|
88
89
|
# * <tt>:jr_jackson</tt> (JRuby only)
|
89
90
|
def use(new_adapter)
|
90
91
|
@adapter = load_adapter(new_adapter)
|
92
|
+
ensure
|
93
|
+
OptionsCache.reset
|
91
94
|
end
|
92
95
|
alias_method :adapter=, :use
|
93
96
|
alias_method :engine=, :use
|
data/lib/multi_json/adapter.rb
CHANGED
@@ -5,6 +5,7 @@ module MultiJson
|
|
5
5
|
class Adapter
|
6
6
|
extend Options
|
7
7
|
include Singleton
|
8
|
+
|
8
9
|
class << self
|
9
10
|
def defaults(action, value)
|
10
11
|
metaclass = class << self; self; end
|
@@ -17,11 +18,11 @@ module MultiJson
|
|
17
18
|
def load(string, options = {})
|
18
19
|
fail self::ParseError if blank?(string)
|
19
20
|
string = string.read if string.respond_to?(:read)
|
20
|
-
instance.load(string,
|
21
|
+
instance.load(string, cached_load_options(options))
|
21
22
|
end
|
22
23
|
|
23
24
|
def dump(object, options = {})
|
24
|
-
instance.dump(object,
|
25
|
+
instance.dump(object, cached_dump_options(options))
|
25
26
|
end
|
26
27
|
|
27
28
|
private
|
@@ -31,6 +32,18 @@ module MultiJson
|
|
31
32
|
rescue ArgumentError # invalid byte sequence in UTF-8
|
32
33
|
false
|
33
34
|
end
|
35
|
+
|
36
|
+
def cached_dump_options(options)
|
37
|
+
OptionsCache.fetch(:dump, options) do
|
38
|
+
dump_options(options).merge(MultiJson.dump_options(options)).merge!(options)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
def cached_load_options(options)
|
43
|
+
OptionsCache.fetch(:load, options) do
|
44
|
+
load_options(options).merge(MultiJson.load_options(options)).merge!(options)
|
45
|
+
end
|
46
|
+
end
|
34
47
|
end
|
35
48
|
end
|
36
49
|
end
|
@@ -11,7 +11,7 @@ module MultiJson
|
|
11
11
|
ParseError = defined?(::Oj::ParseError) ? ::Oj::ParseError : SyntaxError
|
12
12
|
|
13
13
|
def load(string, options = {})
|
14
|
-
options[:symbol_keys] = options
|
14
|
+
options[:symbol_keys] = options[:symbolize_keys]
|
15
15
|
::Oj.load(string, options)
|
16
16
|
end
|
17
17
|
|
data/lib/multi_json/options.rb
CHANGED
@@ -0,0 +1,15 @@
|
|
1
|
+
module MultiJson
|
2
|
+
module OptionsCache
|
3
|
+
extend self
|
4
|
+
|
5
|
+
def reset
|
6
|
+
@dump_cache = {}
|
7
|
+
@load_cache = {}
|
8
|
+
end
|
9
|
+
|
10
|
+
def fetch(type, key)
|
11
|
+
cache = instance_variable_get("@#{type}_cache")
|
12
|
+
cache.key?(key) ? cache[key] : cache[key] = yield
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
data/lib/multi_json/version.rb
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
module MultiJson
|
2
2
|
class Version
|
3
3
|
MAJOR = 1 unless defined? MultiJson::Version::MAJOR
|
4
|
-
MINOR =
|
5
|
-
PATCH =
|
4
|
+
MINOR = 12 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.
|
4
|
+
version: 1.12.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michael Bleigh
|
@@ -33,7 +33,7 @@ cert_chain:
|
|
33
33
|
De8xFEGqLG8vclcTv7gGjDJH5FJTXuwLg41wc8p4ONXEBgLiaC7+S/DVDXWpYxuB
|
34
34
|
akI17ua4eRKTFNvBtzP1802SP1k=
|
35
35
|
-----END CERTIFICATE-----
|
36
|
-
date: 2016-
|
36
|
+
date: 2016-05-03 00:00:00.000000000 Z
|
37
37
|
dependencies:
|
38
38
|
- !ruby/object:Gem::Dependency
|
39
39
|
name: bundler
|
@@ -79,6 +79,7 @@ files:
|
|
79
79
|
- lib/multi_json/adapters/yajl.rb
|
80
80
|
- lib/multi_json/convertible_hash_keys.rb
|
81
81
|
- lib/multi_json/options.rb
|
82
|
+
- lib/multi_json/options_cache.rb
|
82
83
|
- lib/multi_json/parse_error.rb
|
83
84
|
- lib/multi_json/vendor/okjson.rb
|
84
85
|
- lib/multi_json/version.rb
|
metadata.gz.sig
CHANGED
Binary file
|