turbostreamer 1.1.0 → 1.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/README.md +29 -9
- data/lib/turbostreamer/errors.rb +12 -0
- data/lib/turbostreamer/version.rb +1 -1
- data/lib/turbostreamer.rb +17 -1
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: e135edfd638899e0bb26aab00a6cc7f63d702c53757b0f3f7aeb1500762fd6b2
|
4
|
+
data.tar.gz: 7a77931cabed9f76dec5925e5309fd8af550c2f5d829ed4472bf158e4e4555c4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 48b0c24c3e052f91ad2f82455698f3640b6fb0048c5d5a58da8f2332e4f7af79f26ba72e65073fd48f64049e3cd36ecd1674cd357c9030c4e849d3865cf567d3
|
7
|
+
data.tar.gz: 9c90fe729ce30b82f15919ded942519cef4436b2b5675711c549972e527210f1d7df173dfc92a45bea060273c2e92c7790a148314d2f78bfdb75c9cc2bb54ebc
|
data/README.md
CHANGED
@@ -267,19 +267,39 @@ Syntax Differences from Jbuilder
|
|
267
267
|
Backends
|
268
268
|
--------
|
269
269
|
|
270
|
-
Currently TurboStreamer
|
271
|
-
|
270
|
+
Currently TurboStreamer supports [Wankel](https://github.com/malomalo/wankel) and
|
271
|
+
[Oj](https://github.com/ohler55/oj) for JSON encoding.
|
272
272
|
|
273
|
-
|
274
|
-
|
273
|
+
By default TurboStreamer will look for `Oj` and `Wankel` and use the first
|
274
|
+
available option.
|
275
275
|
|
276
|
-
|
277
|
-
out the io so it can be captured for caching.
|
276
|
+
You can also set the encoder when initializing:
|
278
277
|
|
279
|
-
|
280
|
-
|
278
|
+
```ruby
|
279
|
+
TurboStreamer.encode(encoder: :oj)
|
280
|
+
# Or
|
281
|
+
TurboStreamer.encode(encoder: :wankel)
|
282
|
+
|
283
|
+
# You can also pass the class
|
284
|
+
TurboStreamer.encode(encoder: TurboStreamer::WankelEncoder)
|
285
|
+
|
286
|
+
# Or your own encoder
|
287
|
+
TurboStreamer.encode(encoder: MyEncoder)
|
288
|
+
```
|
289
|
+
|
290
|
+
If you need explicitly set the default:
|
291
|
+
|
292
|
+
```ruby
|
293
|
+
TurboStreamer.set_default_encoder(:json, :oj)
|
294
|
+
```
|
295
|
+
|
296
|
+
The idea was to also support [MessagePack](http://msgpack.org/), hence requring
|
297
|
+
the mime type when setting a default encoder.
|
298
|
+
|
299
|
+
Implementing MessagePack would require a bit of work as you would need a change
|
300
|
+
in the protocol. We do not know how big an array or map/object will be when we
|
281
301
|
start emitting it and MessagePack require we know it. It seems like a relatively
|
282
|
-
small change, instead of a marker followed by number of
|
302
|
+
small change, instead of a marker followed by number of lements there would be
|
283
303
|
a start marker followed by the elements and then an end marker.
|
284
304
|
|
285
305
|
All backends must have the following functions:
|
data/lib/turbostreamer.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'stringio'
|
2
2
|
require 'turbostreamer/key_formatter'
|
3
|
+
require 'turbostreamer/errors'
|
3
4
|
|
4
5
|
class TurboStreamer
|
5
6
|
|
@@ -160,6 +161,21 @@ class TurboStreamer
|
|
160
161
|
end
|
161
162
|
end
|
162
163
|
|
164
|
+
def merge!(hash_or_array)
|
165
|
+
if ::Array === hash_or_array
|
166
|
+
hash_or_array.each do |array_element|
|
167
|
+
value!(array_element)
|
168
|
+
end
|
169
|
+
elsif ::Hash === hash_or_array
|
170
|
+
hash_or_array.each_pair do |key, value|
|
171
|
+
key!(key)
|
172
|
+
value!(value)
|
173
|
+
end
|
174
|
+
else
|
175
|
+
raise Errors::MergeError.build(hash_or_array)
|
176
|
+
end
|
177
|
+
end
|
178
|
+
|
163
179
|
alias_method :method_missing, :set!
|
164
180
|
private :method_missing
|
165
181
|
|
@@ -297,7 +313,7 @@ class TurboStreamer
|
|
297
313
|
# Encodes the current builder as JSON.
|
298
314
|
def target!
|
299
315
|
@encoder.flush
|
300
|
-
|
316
|
+
|
301
317
|
if @encoder.output.is_a?(::StringIO)
|
302
318
|
@encoder.output.string
|
303
319
|
else
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: turbostreamer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jon Bracy
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2018-01-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -199,6 +199,7 @@ files:
|
|
199
199
|
- lib/turbostreamer/dependency_tracker.rb
|
200
200
|
- lib/turbostreamer/encoders/oj.rb
|
201
201
|
- lib/turbostreamer/encoders/wankel.rb
|
202
|
+
- lib/turbostreamer/errors.rb
|
202
203
|
- lib/turbostreamer/handler.rb
|
203
204
|
- lib/turbostreamer/key_formatter.rb
|
204
205
|
- lib/turbostreamer/railtie.rb
|
@@ -226,7 +227,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
226
227
|
version: '0'
|
227
228
|
requirements: []
|
228
229
|
rubyforge_project:
|
229
|
-
rubygems_version: 2.
|
230
|
+
rubygems_version: 2.7.4
|
230
231
|
signing_key:
|
231
232
|
specification_version: 4
|
232
233
|
summary: Stream JSON via a Builder-style DSL
|