cddl 0.2.2 → 0.3.0
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/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
|