json-endure 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/README.md +10 -8
- data/json-endure.gemspec +1 -1
- data/lib/json-endure/json.rb +5 -1
- data/spec/json_spec.rb +10 -0
- metadata +4 -4
data/README.md
CHANGED
@@ -8,7 +8,8 @@ an array value, hash key, or hash value. These methods may be helpful
|
|
8
8
|
in a case where you want to examine the first bunch of bytes of a very
|
9
9
|
large file, without downloading all of it.
|
10
10
|
|
11
|
-
It will not repair bad JSON encountered before the truncation.
|
11
|
+
It will not repair bad JSON encountered before the truncation. All
|
12
|
+
JSON-restoration code has been implemented in Ruby.
|
12
13
|
|
13
14
|
License
|
14
15
|
-------
|
@@ -22,16 +23,17 @@ License-file referencing and other doc. formatting taken from
|
|
22
23
|
Install
|
23
24
|
-------
|
24
25
|
|
25
|
-
|
26
|
+
gem install json-endure
|
26
27
|
|
27
28
|
Usage
|
28
29
|
-----
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
30
|
+
```ruby
|
31
|
+
require 'json-endure' #=> true
|
32
|
+
broken = String.new('{ "123": "90", "abc": { "30') #=> "{ \"123\": \"90\", \"abc\": { \"30"
|
33
|
+
good_hash = JSON.endure_and_parse broken #=> {"123"=>"90", "abc"=>{"30"=>""}}
|
34
|
+
fixed = broken.coax_into_json! #=> "{ \"123\": \"90\", \"abc\": { \"30\":\"\"}}"
|
35
|
+
broken #=> "{ \"123\": \"90\", \"abc\": { \"30\":\"\"}}"
|
36
|
+
```
|
35
37
|
|
36
38
|
Contribute
|
37
39
|
----------
|
data/json-endure.gemspec
CHANGED
data/lib/json-endure/json.rb
CHANGED
@@ -118,7 +118,11 @@ module JSON
|
|
118
118
|
end
|
119
119
|
|
120
120
|
when JsonStateVariable::IN_HASH_IN_VALUE
|
121
|
-
|
121
|
+
if c == ','
|
122
|
+
state_stack.last = JsonStateVariable::IN_HASH_PRE_KEY
|
123
|
+
elsif c == '}'
|
124
|
+
state_stack.pop
|
125
|
+
end
|
122
126
|
|
123
127
|
when JsonStateVariable::IN_HASH_IN_STR_VALUE
|
124
128
|
if c == '\\'
|
data/spec/json_spec.rb
CHANGED
@@ -12,6 +12,16 @@ describe JSON, "::endure" do
|
|
12
12
|
|
13
13
|
test_value.should eq(expected_value)
|
14
14
|
end
|
15
|
+
|
16
|
+
it "handles strings with embedded hashes" do
|
17
|
+
string = String.new('{"123":{"90":"abc"},"30":40}')
|
18
|
+
expected_value = String.new('{"123":{"90":"abc"},"30":40}')
|
19
|
+
|
20
|
+
test_value = JSON.endure(string)
|
21
|
+
|
22
|
+
test_value.should eq(expected_value)
|
23
|
+
end
|
24
|
+
|
15
25
|
end
|
16
26
|
|
17
27
|
describe JSON, "::endure_and_parse" do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: json-endure
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-09-02 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: json
|
16
|
-
requirement: &
|
16
|
+
requirement: &2153549280 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,7 +21,7 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *2153549280
|
25
25
|
description: Helper methods to JSON and String to make-do with truncated JSON text.
|
26
26
|
email: Andrew_Burnheimer@cable.comcast.com
|
27
27
|
executables: []
|