json-write-stream 1.1.0 → 1.2.0
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.
- checksums.yaml +4 -4
- data/History.txt +4 -0
- data/lib/json-write-stream.rb +1 -0
- data/lib/json-write-stream/stateful.rb +7 -5
- data/lib/json-write-stream/version.rb +1 -1
- data/lib/json-write-stream/yielding.rb +13 -9
- data/spec/stateful_spec.rb +16 -0
- data/spec/yielding_spec.rb +16 -0
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7445d1cf85a82a9414433ebbdb06008eac6ac4e2
|
4
|
+
data.tar.gz: a82b04356133b8b46c21906bab7d413aebeac855
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3818ce8ae032e722dbde636aaefa818975e91ab25a80e20045da648564051dffde7c12fb9e9291c9ecb2ad0bad48c2438665b672f2f773549f60339f6f4b163a
|
7
|
+
data.tar.gz: 3632c1b6c3b499f20f46e3577f60221a15aec7a10e523a3d39b84b9d6513a9ff83deb6ee8bed07cc4d3dad5fedd7ef6f9b3a1cc255ce7a00f397ee2835cbc27a
|
data/History.txt
CHANGED
data/lib/json-write-stream.rb
CHANGED
@@ -139,12 +139,14 @@ class JsonWriteStream
|
|
139
139
|
stream.write(':')
|
140
140
|
end
|
141
141
|
|
142
|
-
def write_key_value(key, value,
|
142
|
+
def write_key_value(key, value, options = DEFAULT_OPTIONS)
|
143
143
|
write_comma
|
144
|
-
stream.write(before)
|
144
|
+
stream.write(options.fetch(:before, DEFAULT_OPTIONS[:before]))
|
145
145
|
increment
|
146
146
|
write_key(key)
|
147
|
-
stream.write(
|
147
|
+
stream.write(':')
|
148
|
+
stream.write(options.fetch(:between, DEFAULT_OPTIONS[:between]))
|
149
|
+
stream.write(escape(value))
|
148
150
|
end
|
149
151
|
|
150
152
|
def close
|
@@ -176,9 +178,9 @@ class JsonWriteStream
|
|
176
178
|
stream.write('[')
|
177
179
|
end
|
178
180
|
|
179
|
-
def write_element(element,
|
181
|
+
def write_element(element, options = DEFAULT_OPTIONS)
|
180
182
|
write_comma
|
181
|
-
stream.write(before)
|
183
|
+
stream.write(options.fetch(:before, DEFAULT_OPTIONS[:before]))
|
182
184
|
increment
|
183
185
|
stream.write(escape(element))
|
184
186
|
end
|
@@ -60,30 +60,34 @@ class JsonWriteStream
|
|
60
60
|
stream.write('{')
|
61
61
|
end
|
62
62
|
|
63
|
-
def write_array(key,
|
63
|
+
def write_array(key, options = DEFAULT_OPTIONS)
|
64
64
|
write_comma
|
65
|
-
stream.write(before)
|
65
|
+
stream.write(options.fetch(:before, DEFAULT_OPTIONS[:before]))
|
66
66
|
increment
|
67
67
|
write_key(key)
|
68
68
|
stream.write(':')
|
69
|
+
stream.write(options.fetch(:between, DEFAULT_OPTIONS[:between]))
|
69
70
|
super(true)
|
70
71
|
end
|
71
72
|
|
72
|
-
def write_object(key,
|
73
|
+
def write_object(key, options = DEFAULT_OPTIONS)
|
73
74
|
write_comma
|
74
|
-
stream.write(before)
|
75
|
+
stream.write(options.fetch(:before, DEFAULT_OPTIONS[:before]))
|
75
76
|
increment
|
76
77
|
write_key(key)
|
77
78
|
stream.write(':')
|
79
|
+
stream.write(options.fetch(:between, DEFAULT_OPTIONS[:between]))
|
78
80
|
super(true)
|
79
81
|
end
|
80
82
|
|
81
|
-
def write_key_value(key, value,
|
83
|
+
def write_key_value(key, value, options = DEFAULT_OPTIONS)
|
82
84
|
write_comma
|
83
|
-
stream.write(before)
|
85
|
+
stream.write(options.fetch(:before, DEFAULT_OPTIONS[:before]))
|
84
86
|
increment
|
85
87
|
write_key(key)
|
86
|
-
stream.write(
|
88
|
+
stream.write(':')
|
89
|
+
stream.write(options.fetch(:between, DEFAULT_OPTIONS[:between]))
|
90
|
+
stream.write(escape(value))
|
87
91
|
end
|
88
92
|
|
89
93
|
def close
|
@@ -102,9 +106,9 @@ class JsonWriteStream
|
|
102
106
|
stream.write('[')
|
103
107
|
end
|
104
108
|
|
105
|
-
def write_element(element,
|
109
|
+
def write_element(element, options = DEFAULT_OPTIONS)
|
106
110
|
write_comma
|
107
|
-
stream.write(before)
|
111
|
+
stream.write(options.fetch(:before, DEFAULT_OPTIONS[:before]))
|
108
112
|
increment
|
109
113
|
stream.write(escape(element))
|
110
114
|
end
|
data/spec/stateful_spec.rb
CHANGED
@@ -21,6 +21,22 @@ describe JsonWriteStream::YieldingWriter do
|
|
21
21
|
|
22
22
|
it_behaves_like 'a json stream'
|
23
23
|
|
24
|
+
it 'respects the "before" option' do
|
25
|
+
stream_writer.write_object
|
26
|
+
stream_writer.write_key_value('foo', 'bar', before: "\n ")
|
27
|
+
stream_writer.close
|
28
|
+
|
29
|
+
expect(stream.string).to eq("{\n \"foo\":\"bar\"}")
|
30
|
+
end
|
31
|
+
|
32
|
+
it 'respects the "between" option' do
|
33
|
+
stream_writer.write_object
|
34
|
+
stream_writer.write_key_value('foo', 'bar', between: ' ')
|
35
|
+
stream_writer.close
|
36
|
+
|
37
|
+
expect(stream.string).to eq('{"foo": "bar"}')
|
38
|
+
end
|
39
|
+
|
24
40
|
describe '#close' do
|
25
41
|
it 'unwinds the stack, adds appropriate closing punctuation for each unclosed item, and closes the stream' do
|
26
42
|
stream_writer.write_array
|
data/spec/yielding_spec.rb
CHANGED
@@ -21,6 +21,22 @@ describe JsonWriteStream::YieldingWriter do
|
|
21
21
|
|
22
22
|
it_behaves_like 'a json stream'
|
23
23
|
|
24
|
+
it 'respects the "before" option' do
|
25
|
+
stream_writer.write_object do |object_writer|
|
26
|
+
object_writer.write_key_value('foo', 'bar', before: "\n ")
|
27
|
+
end
|
28
|
+
|
29
|
+
expect(stream.string).to eq("{\n \"foo\":\"bar\"}")
|
30
|
+
end
|
31
|
+
|
32
|
+
it 'respects the "between" option' do
|
33
|
+
stream_writer.write_object do |object_writer|
|
34
|
+
object_writer.write_key_value('foo', 'bar', between: ' ')
|
35
|
+
end
|
36
|
+
|
37
|
+
expect(stream.string).to eq('{"foo": "bar"}')
|
38
|
+
end
|
39
|
+
|
24
40
|
describe '#write_key_value' do
|
25
41
|
it 'converts all keys to strings' do
|
26
42
|
stream_writer.write_object do |object_writer|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: json-write-stream
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Cameron Dutro
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-07-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: json_pure
|
@@ -64,7 +64,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
64
64
|
version: '0'
|
65
65
|
requirements: []
|
66
66
|
rubyforge_project:
|
67
|
-
rubygems_version: 2.2
|
67
|
+
rubygems_version: 2.5.2
|
68
68
|
signing_key:
|
69
69
|
specification_version: 4
|
70
70
|
summary: An easy, streaming way to generate JSON.
|