abroad 4.1.1 → 4.1.2
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
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: b46d62e7ba153afa73884e35c5bc6f1ecaa7a8e3
|
|
4
|
+
data.tar.gz: 2b40cc7ffbff3270a2e20e66851a253e7b3fead4
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 89b758b0a1bb58e8a0242e1f9f8ce5213981ba338bdd7255e4fe6f7b9afb2c9a2138f35de3da6b291b7c9e90ee0168af42979571072e4662a9a6ed0b32e7b358
|
|
7
|
+
data.tar.gz: 7708f3064b712244753192b8dfa2e19f11b7c05270e0e51c3b0c68825b4f76bd276e91a1a52716aafa482d1ac9d78ebaa2656e1b2bbed59ff471467aa2619714
|
|
@@ -16,7 +16,7 @@ module Abroad
|
|
|
16
16
|
|
|
17
17
|
def write_key_value(key, value)
|
|
18
18
|
key_parts = split_key(key)
|
|
19
|
-
|
|
19
|
+
add_key_value(key_parts, value)
|
|
20
20
|
end
|
|
21
21
|
|
|
22
22
|
def flush
|
|
@@ -28,6 +28,23 @@ module Abroad
|
|
|
28
28
|
|
|
29
29
|
private
|
|
30
30
|
|
|
31
|
+
def add_key_value(key_parts, value)
|
|
32
|
+
case value
|
|
33
|
+
when Array
|
|
34
|
+
value.each_with_index do |element, idx|
|
|
35
|
+
add_key_value(key_parts + [idx.to_s], element)
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
when Hash
|
|
39
|
+
value.each_pair do |key, val|
|
|
40
|
+
add_key_value(key_parts + [key], val)
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
else
|
|
44
|
+
trie.add(key_parts, encode(value))
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
|
|
31
48
|
def encode(value)
|
|
32
49
|
case value
|
|
33
50
|
when Array
|
|
@@ -59,7 +76,6 @@ module Abroad
|
|
|
59
76
|
end
|
|
60
77
|
end
|
|
61
78
|
|
|
62
|
-
# depth-first
|
|
63
79
|
def write_node(node, parent_key)
|
|
64
80
|
if node
|
|
65
81
|
if node.has_children?
|
|
@@ -77,13 +93,12 @@ module Abroad
|
|
|
77
93
|
end
|
|
78
94
|
|
|
79
95
|
def write_value(node, parent_key)
|
|
80
|
-
value = (node ? node.value : '') || ''
|
|
96
|
+
value = coerce((node ? node.value : '') || '')
|
|
81
97
|
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
write_textual_value(parent_key, value)
|
|
98
|
+
if writer.in_map?
|
|
99
|
+
writer.write_key_value(parent_key, value)
|
|
100
|
+
else
|
|
101
|
+
writer.write_element(value)
|
|
87
102
|
end
|
|
88
103
|
end
|
|
89
104
|
|
|
@@ -99,27 +114,6 @@ module Abroad
|
|
|
99
114
|
end
|
|
100
115
|
end
|
|
101
116
|
|
|
102
|
-
def write_textual_value(parent_key, value)
|
|
103
|
-
value = coerce(value)
|
|
104
|
-
|
|
105
|
-
if writer.in_map?
|
|
106
|
-
writer.write_key_value(parent_key, value)
|
|
107
|
-
else
|
|
108
|
-
writer.write_element(value)
|
|
109
|
-
end
|
|
110
|
-
end
|
|
111
|
-
|
|
112
|
-
def write_array_value(parent_key, elements)
|
|
113
|
-
# we should _always_ be in a map, but just in case...
|
|
114
|
-
writer.write_sequence(parent_key) if writer.in_map?
|
|
115
|
-
|
|
116
|
-
elements.each do |element|
|
|
117
|
-
writer.write_element(coerce(element))
|
|
118
|
-
end
|
|
119
|
-
|
|
120
|
-
writer.close_sequence
|
|
121
|
-
end
|
|
122
|
-
|
|
123
117
|
def write_map(node, parent_key)
|
|
124
118
|
if writer.in_map?
|
|
125
119
|
writer.write_map(parent_key)
|
|
@@ -158,8 +152,8 @@ module Abroad
|
|
|
158
152
|
arr[idx] = node.children[idx.to_s]
|
|
159
153
|
end
|
|
160
154
|
end
|
|
161
|
-
end
|
|
162
155
|
|
|
156
|
+
end
|
|
163
157
|
end
|
|
164
158
|
end
|
|
165
159
|
end
|
data/lib/abroad/version.rb
CHANGED
|
@@ -159,6 +159,24 @@ describe Abroad::Serializers::Yaml::RailsSerializer do
|
|
|
159
159
|
})
|
|
160
160
|
end
|
|
161
161
|
|
|
162
|
+
it 'works for nested arrays' do
|
|
163
|
+
result = serialize do
|
|
164
|
+
serializer.write_key_value('foo', [
|
|
165
|
+
{ 'bar' => %w(a b), 'baz' => 'boo' },
|
|
166
|
+
{ 'bar' => %w(c d), 'baz' => 'bop' }
|
|
167
|
+
])
|
|
168
|
+
end
|
|
169
|
+
|
|
170
|
+
expect(result).to eq({
|
|
171
|
+
'fr' => {
|
|
172
|
+
'foo' => [
|
|
173
|
+
{ 'bar' => %w(a b), 'baz' => 'boo' },
|
|
174
|
+
{ 'bar' => %w(c d), 'baz' => 'bop' }
|
|
175
|
+
]
|
|
176
|
+
}
|
|
177
|
+
})
|
|
178
|
+
end
|
|
179
|
+
|
|
162
180
|
it 'writes nested key/value pairs and arrays (in any order)' do
|
|
163
181
|
result = serialize do
|
|
164
182
|
serializer.write_key_value('foo.0.bar.0', 'a')
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: abroad
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 4.1.
|
|
4
|
+
version: 4.1.2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Cameron Dutro
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2016-08-
|
|
11
|
+
date: 2016-08-09 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: htmlentities
|