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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 192e487f56aa32371186d7bfe2156cb4c7a465fb
4
- data.tar.gz: 8160ada742e24c3d9141cd7d20e7dc83d2665cb8
3
+ metadata.gz: 5e96b926d7b91f4085b026b6416c3c468c5bffdf
4
+ data.tar.gz: 104a4d49f78b4f0c3fd672a00e41f4d906a38560
5
5
  SHA512:
6
- metadata.gz: a14e09892b6831a6db72a6442a2b009daa7f2d2c2047c3b1b5ea37d0da6d659c8451a2595b94f7b58a796b2f3afe555ddc1cf05a45065fa554172d54c483d181
7
- data.tar.gz: f5672a56a37cf50d9d8aacff38563d6ed4d8037917c52cedd4f43ab261feb8f071b1021d11b184c8dd6145f5b59ef63866e84816084c1836821a193e4eaa0651
6
+ metadata.gz: bc7414656a7232c31c46567cf31420495c2586c2af513ad53d778d7cbe3dabf1d26917bd59255a4b9b9acc3acd9032e1d01b74ae99ffeae495a6510b15035e78
7
+ data.tar.gz: 2bcbfadaae30c0f8dae730cf4d005526a0af35780a51933b7a4f52805d9c25baa1f64fe58438a23c24d3e66143b450377f0b6f16df3cefa4171b1f88d9efa1c6
@@ -1,6 +1,6 @@
1
1
  spec = Gem::Specification.new do |s|
2
2
  s.name = 'cddl'
3
- s.version = '0.2.2'
3
+ s.version = '0.3.0'
4
4
  s.summary = "CDDL generator and validator."
5
5
  s.description = %{A parser, generator, and validator for CDDL}
6
6
  s.add_dependency('cbor-diag')
@@ -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 = membername S ":"
34
- membername = bareword ; note that this can be a typename
35
- / type1 ; can be preempted by previous...
33
+ memberkey = type1 S "::"
34
+ / bareword S ":"
35
+ / string S ":"
36
36
 
37
37
  bareword = id
38
38
 
@@ -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
- [[:member, *occ, label(mk.membername), type1(n.type1)]]
439
- else
440
- # fail n.inspect unless n.type1
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
- type1(n.type1, true) # type1 can be a group here!
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
 
@@ -13,5 +13,5 @@ reputon = {
13
13
  ? sample-size: uint
14
14
  ? generated: uint
15
15
  ? expires: uint
16
- * any: any
16
+ * tstr:: any
17
17
  }
@@ -37,6 +37,6 @@ normal-value = ( normal-rating: float16 )
37
37
  sample-value = ( sample-size: uint )
38
38
  gen-value = ( generated: uint )
39
39
  expire-value = ( expires: uint )
40
- ext-value = ( any: any )
40
+ ext-value = ( tstr:: any )
41
41
 
42
42
 
@@ -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, [:type1, [:prim]], [:prim]]]]]]]]
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": "one"]
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
- "f64": float64
382
+ ? "f32": float32
383
+ "f64":: float64
369
384
  }
370
385
  beer = 3.14 / 6.28
371
386
  HERE
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cddl
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Carsten Bormann