cddl 0.1.5 → 0.1.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/cddl.gemspec +1 -1
- data/lib/cddl.rb +8 -1
- data/test/test-cddl.rb +9 -0
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3d195f7221754d19c72524ad9e7f813021ffbb06
|
4
|
+
data.tar.gz: 3db97cb441c00b2abc6a420163352243e8c89e07
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c6fe1856503d0f3b316830fc61b6b9569014981528fd5058c8390553565adf5cf7e4fb16712e4d2a47877dcb02d066ba818775d75c12121db3c41f8e63d2cb52
|
7
|
+
data.tar.gz: 84da634e9885f93badaeda4f0642163a9959ebf362b8e544189b4810076e1abf574378e6c470e4cc5b2eeeb560b251a0c1265734fd6b6de615891f39cdd10d81
|
data/cddl.gemspec
CHANGED
data/lib/cddl.rb
CHANGED
@@ -77,7 +77,14 @@ module CDDL
|
|
77
77
|
when :map
|
78
78
|
Hash[where[1..-1].flat_map {|m| generate(m, true)}]
|
79
79
|
when :array, :grpent
|
80
|
-
where[1..-1].flat_map {|m| generate(m).map{|e| e[1]}}
|
80
|
+
r = where[1..-1].flat_map {|m| generate(m).map{|e| e[1]}}
|
81
|
+
.flat_map {|e| Array === e && e[0] == :grpent ? e[1..-1] : [e]}
|
82
|
+
# nested grpents need to be "unpacked"
|
83
|
+
if where[0] == :grpent
|
84
|
+
[:grpent, *r]
|
85
|
+
else
|
86
|
+
r
|
87
|
+
end
|
81
88
|
when :member
|
82
89
|
s = where[1]
|
83
90
|
e = [where[2], [s, 4].max].min # truncate to 4 unless must be more
|
data/test/test-cddl.rb
CHANGED
@@ -350,6 +350,15 @@ HERE
|
|
350
350
|
refute parser.validate([1, 2, 1], false)
|
351
351
|
end
|
352
352
|
|
353
|
+
|
354
|
+
def test_generate_occur2 # XXX need indirection for now
|
355
|
+
parser = CDDL::Parser.new <<HERE
|
356
|
+
test = [2*2 test1 1*1 test1]
|
357
|
+
test1 = (one: 1, two: 2)
|
358
|
+
HERE
|
359
|
+
assert_equal [1, 2, 1, 2, 1, 2], parser.generate
|
360
|
+
end
|
361
|
+
|
353
362
|
def test_validate_json_float
|
354
363
|
parser = CDDL::Parser.new <<HERE
|
355
364
|
test = {
|