elster 0.0.6 → 0.0.7
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/Users/jwebb/src/bigjason/elster/Gemfile.lock +1 -1
- data/Users/jwebb/src/bigjason/elster/README.md +1 -1
- data/Users/jwebb/src/bigjason/elster/lib/elster/exceptions.rb +4 -0
- data/Users/jwebb/src/bigjason/elster/lib/elster/streamer.rb +10 -2
- data/Users/jwebb/src/bigjason/elster/lib/elster/version.rb +1 -1
- data/Users/jwebb/src/bigjason/elster/lib/elster.rb +1 -0
- data/Users/jwebb/src/bigjason/elster/pkg/elster-0.0.6.gem +0 -0
- data/Users/jwebb/src/bigjason/elster/test/streamer_test.rb +61 -7
- metadata +5 -3
@@ -44,6 +44,10 @@ module Elster
|
|
44
44
|
#
|
45
45
|
# { "mistake" : [ "HUGE!" ] }
|
46
46
|
def key(key, value=nil, &block)
|
47
|
+
if @current_type == :array
|
48
|
+
raise JsonContainerTypeError, "Attempted to write an object `key` value inside a JSON array."
|
49
|
+
end
|
50
|
+
|
47
51
|
if @item_count > 0
|
48
52
|
write ","
|
49
53
|
else
|
@@ -82,6 +86,10 @@ module Elster
|
|
82
86
|
#
|
83
87
|
# [ 1, { "name" : "Wiggens" } ]
|
84
88
|
def add(value=nil, &block)
|
89
|
+
if @current_type == :object
|
90
|
+
raise JsonContainerTypeError, "Attempted to add an array value inside a JSON object."
|
91
|
+
end
|
92
|
+
|
85
93
|
if @item_count > 0
|
86
94
|
write ","
|
87
95
|
else
|
@@ -119,7 +127,7 @@ module Elster
|
|
119
127
|
when nil
|
120
128
|
encode_nil(value)
|
121
129
|
else
|
122
|
-
|
130
|
+
encode_generic(value)
|
123
131
|
end
|
124
132
|
end
|
125
133
|
|
@@ -127,7 +135,7 @@ module Elster
|
|
127
135
|
MultiJson.dump(value)
|
128
136
|
end
|
129
137
|
|
130
|
-
SAFE_RE = Regexp.new("\\A[#{Regexp.escape((32..126).select{|c| c
|
138
|
+
SAFE_RE = Regexp.new("\\A[#{Regexp.escape((32..126).select{|c| ![34, 92].include?(c)}.map{|c| c.chr}.join)}]+\\z")
|
131
139
|
def encode_string(value)
|
132
140
|
if value =~ SAFE_RE
|
133
141
|
"\"#{value}\""
|
Binary file
|
@@ -110,11 +110,43 @@ class StreamerTest < MiniTest::Unit::TestCase
|
|
110
110
|
assert_equal 44, parsed[1]["age"]
|
111
111
|
end
|
112
112
|
|
113
|
+
def test_array_nested_array
|
114
|
+
json.add("99")
|
115
|
+
json.add do
|
116
|
+
json.add(1)
|
117
|
+
json.add(2)
|
118
|
+
end
|
119
|
+
json.add(99)
|
120
|
+
json.close
|
121
|
+
|
122
|
+
assert_equal "99", parsed[0]
|
123
|
+
assert_equal [1, 2], parsed[1]
|
124
|
+
assert_equal 99, parsed[2]
|
125
|
+
end
|
126
|
+
|
127
|
+
def test_array_of_nils
|
128
|
+
json.add
|
129
|
+
json.add
|
130
|
+
json.add(nil)
|
131
|
+
json.close
|
132
|
+
|
133
|
+
assert_equal [nil, nil, nil], parsed
|
134
|
+
end
|
135
|
+
|
136
|
+
def test_object_of_nils
|
137
|
+
json.key(:name)
|
138
|
+
json.key(:age)
|
139
|
+
json.close
|
140
|
+
|
141
|
+
assert_equal({"name" => nil, "age" => nil}, parsed)
|
142
|
+
end
|
143
|
+
|
113
144
|
def test_ruby_hash
|
114
|
-
json.key("name", {:first => "Bobert"})
|
145
|
+
json.key("name", {:first => "Bobert", :age => 99})
|
115
146
|
json.close
|
116
147
|
|
117
148
|
assert_equal "Bobert", parsed["name"]["first"]
|
149
|
+
assert_equal 99, parsed["name"]["age"]
|
118
150
|
end
|
119
151
|
|
120
152
|
def test_ruby_array
|
@@ -124,18 +156,18 @@ class StreamerTest < MiniTest::Unit::TestCase
|
|
124
156
|
assert_equal [1, 2], parsed["an_array"]
|
125
157
|
end
|
126
158
|
|
127
|
-
def
|
128
|
-
json.key("description", "I am \
|
159
|
+
def test_string_with_cr
|
160
|
+
json.key("description", "I am \nmulti\nlined")
|
129
161
|
json.close
|
130
162
|
|
131
|
-
assert_equal "I am \
|
163
|
+
assert_equal "I am \nmulti\nlined", parsed["description"]
|
132
164
|
end
|
133
165
|
|
134
|
-
def
|
135
|
-
json.key("description", "I am \
|
166
|
+
def test_string_with_cr_at_end
|
167
|
+
json.key("description", "I am \n")
|
136
168
|
json.close
|
137
169
|
|
138
|
-
assert_equal "I am \
|
170
|
+
assert_equal "I am \n", parsed["description"]
|
139
171
|
end
|
140
172
|
|
141
173
|
def test_boolean_true
|
@@ -151,4 +183,26 @@ class StreamerTest < MiniTest::Unit::TestCase
|
|
151
183
|
|
152
184
|
assert_equal false, parsed["no_works"]
|
153
185
|
end
|
186
|
+
|
187
|
+
def test_encode_basic_chars
|
188
|
+
expected = " !\#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~"
|
189
|
+
json.key("chars", expected)
|
190
|
+
json.close
|
191
|
+
|
192
|
+
assert_equal expected, parsed["chars"]
|
193
|
+
end
|
194
|
+
|
195
|
+
def test_no_key_in_arrays
|
196
|
+
json.add(1)
|
197
|
+
assert_raises(Elster::JsonContainerTypeError) do
|
198
|
+
json.key("DoesntMatter", "Nothing Written")
|
199
|
+
end
|
200
|
+
end
|
201
|
+
|
202
|
+
def test_no_add_in_objects
|
203
|
+
json.key("DoesntMatter", "Nothing will be written")
|
204
|
+
assert_raises(Elster::JsonContainerTypeError) do
|
205
|
+
json.add(1)
|
206
|
+
end
|
207
|
+
end
|
154
208
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: elster
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.7
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -101,6 +101,7 @@ files:
|
|
101
101
|
- /Users/jwebb/src/bigjason/elster/elster.gemspec
|
102
102
|
- /Users/jwebb/src/bigjason/elster/Gemfile
|
103
103
|
- /Users/jwebb/src/bigjason/elster/Gemfile.lock
|
104
|
+
- /Users/jwebb/src/bigjason/elster/lib/elster/exceptions.rb
|
104
105
|
- /Users/jwebb/src/bigjason/elster/lib/elster/streamer.rb
|
105
106
|
- /Users/jwebb/src/bigjason/elster/lib/elster/version.rb
|
106
107
|
- /Users/jwebb/src/bigjason/elster/lib/elster.rb
|
@@ -108,6 +109,7 @@ files:
|
|
108
109
|
- /Users/jwebb/src/bigjason/elster/pkg/elster-0.0.2.gem
|
109
110
|
- /Users/jwebb/src/bigjason/elster/pkg/elster-0.0.3.gem
|
110
111
|
- /Users/jwebb/src/bigjason/elster/pkg/elster-0.0.5.gem
|
112
|
+
- /Users/jwebb/src/bigjason/elster/pkg/elster-0.0.6.gem
|
111
113
|
- /Users/jwebb/src/bigjason/elster/Rakefile
|
112
114
|
- /Users/jwebb/src/bigjason/elster/README.md
|
113
115
|
- /Users/jwebb/src/bigjason/elster/test/streamer_test.rb
|
@@ -125,7 +127,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
125
127
|
version: '0'
|
126
128
|
segments:
|
127
129
|
- 0
|
128
|
-
hash:
|
130
|
+
hash: -398928207981350799
|
129
131
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
130
132
|
none: false
|
131
133
|
requirements:
|
@@ -134,7 +136,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
134
136
|
version: '0'
|
135
137
|
segments:
|
136
138
|
- 0
|
137
|
-
hash:
|
139
|
+
hash: -398928207981350799
|
138
140
|
requirements: []
|
139
141
|
rubyforge_project:
|
140
142
|
rubygems_version: 1.8.24
|