cddl 0.2.2 → 0.3.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/cddl.gemspec +1 -1
- data/data/cddl.abnf +3 -3
- data/lib/cddl.rb +17 -8
- data/test-data/7071-concise.cddl +1 -1
- data/test-data/7071-verbose.cddl +1 -1
- data/test/test-cddl.rb +18 -3
- 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: 5e96b926d7b91f4085b026b6416c3c468c5bffdf
|
4
|
+
data.tar.gz: 104a4d49f78b4f0c3fd672a00e41f4d906a38560
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bc7414656a7232c31c46567cf31420495c2586c2af513ad53d778d7cbe3dabf1d26917bd59255a4b9b9acc3acd9032e1d01b74ae99ffeae495a6510b15035e78
|
7
|
+
data.tar.gz: 2bcbfadaae30c0f8dae730cf4d005526a0af35780a51933b7a4f52805d9c25baa1f64fe58438a23c24d3e66143b450377f0b6f16df3cefa4171b1f88d9efa1c6
|
data/cddl.gemspec
CHANGED
data/data/cddl.abnf
CHANGED
@@ -30,9 +30,9 @@ group = "(" S *grpent S ")"
|
|
30
30
|
grpent = [occur S] [memberkey S] type1 optcom
|
31
31
|
/ [occur S] groupname optcom ; always preempted by previous...
|
32
32
|
|
33
|
-
memberkey =
|
34
|
-
|
35
|
-
|
33
|
+
memberkey = type1 S "::"
|
34
|
+
/ bareword S ":"
|
35
|
+
/ string S ":"
|
36
36
|
|
37
37
|
bareword = id
|
38
38
|
|
data/lib/cddl.rb
CHANGED
@@ -92,7 +92,7 @@ module CDDL
|
|
92
92
|
r_process("used_in_cddl_prelude", @rules["used_in_cddl_prelude"])
|
93
93
|
@rules.each do |n, r|
|
94
94
|
# r_process(n, r) # debug only loop
|
95
|
-
warn "Unused rule #{n}" unless @stage1[n]
|
95
|
+
warn "*** Unused rule #{n}" unless @stage1[n]
|
96
96
|
end
|
97
97
|
if result[0] == :grpent
|
98
98
|
warn "Group at top -- first rule must be a type!"
|
@@ -434,15 +434,22 @@ module CDDL
|
|
434
434
|
|
435
435
|
def grpent(n) # returns array of entries
|
436
436
|
occ = occur(n.occur)
|
437
|
-
if mk = n.memberkey # work around unclear bug in ast generation
|
438
|
-
|
439
|
-
|
440
|
-
|
441
|
-
t = if n.membername # work around unclear bug, part 2
|
442
|
-
type1(n.membername.type1, true)
|
437
|
+
if mk = n.memberkey # work around unclear bug in ast generation below
|
438
|
+
fail n.inspect unless n.type1
|
439
|
+
if t1 = mk.type1
|
440
|
+
[[:member, *occ, type1(t1), type1(n.type1)]]
|
443
441
|
else
|
444
|
-
|
442
|
+
bw = mk.bareword
|
443
|
+
fail unless bw
|
444
|
+
name = bw.to_s
|
445
|
+
[[:member, *occ, [:string, name], type1(n.type1)]]
|
445
446
|
end
|
447
|
+
else
|
448
|
+
t = if n.bareword # work around unclear bug, part 2
|
449
|
+
type1(n.bareword.type1, true)
|
450
|
+
else
|
451
|
+
type1(n.type1, true) # type1 can be a group here!
|
452
|
+
end
|
446
453
|
if t[0] == :grpent && (@insides.last != :array || occ == [1, 1])
|
447
454
|
# go through the members here and multiply the occs
|
448
455
|
t1 = t[1..-1].flatten(1)
|
@@ -527,6 +534,8 @@ module CDDL
|
|
527
534
|
end
|
528
535
|
end # XXX should flatten the thing, too
|
529
536
|
t
|
537
|
+
else
|
538
|
+
fail [n, n.children].inspect
|
530
539
|
end
|
531
540
|
end
|
532
541
|
|
data/test-data/7071-concise.cddl
CHANGED
data/test-data/7071-verbose.cddl
CHANGED
data/test/test-cddl.rb
CHANGED
@@ -33,7 +33,7 @@ class TestABNF < Test::Unit::TestCase
|
|
33
33
|
[:member, 0, 1, [:string, "sample-size"], [:prim, 0]],
|
34
34
|
[:member, 0, 1, [:string, "generated"], [:prim, 0]],
|
35
35
|
[:member, 0, 1, [:string, "expires"], [:prim, 0]],
|
36
|
-
[:member, 0, CDDL::MANY, [:
|
36
|
+
[:member, 0, CDDL::MANY, [:prim, 3], [:prim]]]]]]]]
|
37
37
|
|
38
38
|
def test_aa_rfc7071_concise
|
39
39
|
parser1 = CDDL::Parser.new(File.read("#{TEST_DATA_DIR}/7071-concise.cddl"))
|
@@ -133,7 +133,7 @@ HERE
|
|
133
133
|
|
134
134
|
def test_validate_a_string_string
|
135
135
|
parser = CDDL::Parser.new <<HERE
|
136
|
-
test = [* "two"
|
136
|
+
test = [* "two":: "one"]
|
137
137
|
HERE
|
138
138
|
assert parser.validate([])
|
139
139
|
assert parser.validate(["one"])
|
@@ -359,13 +359,28 @@ HERE
|
|
359
359
|
assert_equal [1, 2, 1, 2, 1, 2], parser.generate
|
360
360
|
end
|
361
361
|
|
362
|
+
def test_generate_occur3 # XXX need indirection for now
|
363
|
+
parser = CDDL::Parser.new <<HERE
|
364
|
+
test = [5*5 "foo"]
|
365
|
+
HERE
|
366
|
+
assert_equal Array.new(5, "foo"), parser.generate
|
367
|
+
end
|
368
|
+
|
369
|
+
def test_basic_string # XXX need indirection for now
|
370
|
+
parser = CDDL::Parser.new <<HERE
|
371
|
+
test = "foo"
|
372
|
+
HERE
|
373
|
+
assert_equal "foo", parser.generate
|
374
|
+
end
|
375
|
+
|
362
376
|
def test_validate_json_float
|
363
377
|
parser = CDDL::Parser.new <<HERE
|
364
378
|
test = {
|
365
379
|
foo: int
|
366
380
|
? bar: beer
|
367
381
|
f16: float16
|
368
|
-
"
|
382
|
+
? "f32": float32
|
383
|
+
"f64":: float64
|
369
384
|
}
|
370
385
|
beer = 3.14 / 6.28
|
371
386
|
HERE
|