json-streamer 1.0.0 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/README.md +24 -4
- data/lib/json/streamer/json_streamer.rb +6 -3
- data/lib/json/streamer/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: defb27980ce9856c197b03d9dcd036c6a9676faf
|
4
|
+
data.tar.gz: be55ab586714595baab1ae9e570fc5c0d1c869d9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ccefc6735d211f77a1cd1c18b05073d0d585033478f8495a922402dbf8c479b9f9eb3804a53c55c6f5b21b6dc8c93873ab9a569df97e95daefd5d04e24a9432d
|
7
|
+
data.tar.gz: c132b1c90100166e7716959b12fa085e64ebfaa754fcfc919e20c290537704d1e915632846ae680b697fe3a29adefafdd751e1cc79ae6685b510da6c9d6801a2
|
data/.gitignore
CHANGED
data/README.md
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
# Json::Streamer
|
2
2
|
|
3
|
-
|
4
|
-
|
3
|
+
#### Ruby utility that supports JSON streaming allowing you to get data based on various criteria (key, nesting level, etc).
|
4
|
+
|
5
|
+
| Branch | Build status |
|
6
|
+
| ------ | ------------ |
|
5
7
|
| Release | [![Build Status](https://travis-ci.org/thisismydesign/json-streamer.svg?branch=release)](https://travis-ci.org/thisismydesign/json-streamer) [![Coverage Status](https://coveralls.io/repos/github/thisismydesign/json-streamer/badge.svg?branch=release)](https://coveralls.io/github/thisismydesign/json-streamer?branch=release) [![Gem Version](https://badge.fury.io/rb/json-streamer.svg)](https://badge.fury.io/rb/json-streamer) |
|
6
8
|
| Development | [![Build Status](https://travis-ci.org/thisismydesign/json-streamer.svg?branch=master)](https://travis-ci.org/thisismydesign/json-streamer) [![Coverage Status](https://coveralls.io/repos/github/thisismydesign/json-streamer/badge.svg?branch=master)](https://coveralls.io/github/thisismydesign/json-streamer?branch=master) |
|
7
9
|
|
8
|
-
Ruby utility that supports JSON streaming allowing you to get data based on various criteria (key, nesting level, etc).
|
9
|
-
|
10
10
|
*If you've tried JSON streaming with other Ruby libraries before (e.g. [JSON::Stream](https://github.com/dgraham/json-stream), [Yajl::FFI](https://github.com/dgraham/yajl-ffi)):*
|
11
11
|
|
12
12
|
This gem will basically spare you the need to define your own callbacks (i.e. implement an actual JSON parser using `start_object`, `end_object`, `key`, `value`, etc.).
|
@@ -130,6 +130,26 @@ Output:
|
|
130
130
|
{}
|
131
131
|
```
|
132
132
|
|
133
|
+
#### EventMachine-style input (since 1.1.0)
|
134
|
+
|
135
|
+
```ruby
|
136
|
+
# Get a JsonStreamer object that provides access to the parser
|
137
|
+
# but does not start processing immediately
|
138
|
+
streamer = Json::Streamer::JsonStreamer.new
|
139
|
+
|
140
|
+
streamer.get(nesting_level:1) do |object|
|
141
|
+
p object
|
142
|
+
end
|
143
|
+
```
|
144
|
+
|
145
|
+
Then later in your EventMachine handler:
|
146
|
+
|
147
|
+
```ruby
|
148
|
+
def receive_data(data)
|
149
|
+
streamer.parser << data
|
150
|
+
end
|
151
|
+
```
|
152
|
+
|
133
153
|
Check the unit tests for more examples ([spec/streamer_spec.rb](spec/streamer_spec.rb)).
|
134
154
|
|
135
155
|
## Feedback
|
@@ -5,8 +5,9 @@ module Json
|
|
5
5
|
class JsonStreamer
|
6
6
|
|
7
7
|
attr_reader :aggregator
|
8
|
+
attr_reader :parser
|
8
9
|
|
9
|
-
def initialize(file_io, chunk_size = 1000)
|
10
|
+
def initialize(file_io = nil, chunk_size = 1000)
|
10
11
|
@parser = JSON::Stream::Parser.new
|
11
12
|
|
12
13
|
@file_io = file_io
|
@@ -64,8 +65,10 @@ module Json
|
|
64
65
|
@current_nesting_level -= 1
|
65
66
|
end
|
66
67
|
|
67
|
-
@file_io
|
68
|
-
@
|
68
|
+
if @file_io
|
69
|
+
@file_io.each(@chunk_size) do |chunk|
|
70
|
+
@parser << chunk
|
71
|
+
end
|
69
72
|
end
|
70
73
|
end
|
71
74
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: json-streamer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- thisismydesign
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-05-
|
11
|
+
date: 2017-05-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|