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 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