cddl 0.6.0 → 0.6.1

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: 393b811831045b4c855ad1f27ba0fa410c6e5278
4
- data.tar.gz: 8f28e4e50d8a408b1ef43c13b90c6c8c00c6d99c
3
+ metadata.gz: 8e2adafcd62e2e19c64d3b561c3f4fa020551ded
4
+ data.tar.gz: 42cfe0856afa556943bdcf10c8805bf9acf87d13
5
5
  SHA512:
6
- metadata.gz: 73d8c3fb4b67680d74eeb9ea2b91dc84e9b23410a5ee4f8fb253dddfccbf3531114fece3c2d4008e36cd171c7f833567141690a856f3a41684dfb14f0d227cdf
7
- data.tar.gz: 1402b3fd3b79bc6f1c69627125886ef9d59a1693d1c65c76883d79f982551f94af2332cc35eec9f8141100bb8e086a079542677551d2c209ff704b405dc9469a
6
+ metadata.gz: 3e3aaa3ec40b05a3b0afb50a13e7cf169c33cb55634289379bc481a7831fc4faf490536828097e490a172a776dc7b2c30f3b83f975595dfdc857f5b15f8c4988
7
+ data.tar.gz: 30308d4da1eb610ebba0d9fd67906b4615a2d701bed333a0afc4695b92d2c2a49f0a6819c61a58784c26e834e57ea496f6aaf214c314c274624bd553aec25c75
@@ -1,6 +1,6 @@
1
1
  spec = Gem::Specification.new do |s|
2
2
  s.name = 'cddl'
3
- s.version = '0.6.0'
3
+ s.version = '0.6.1'
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')
@@ -34,7 +34,7 @@ group = grpchoice S *("//" S grpchoice S)
34
34
  grpchoice = *grpent
35
35
 
36
36
  grpent = [occur S] [memberkey S] type optcom
37
- / [occur S] groupname [genericarg] optcom ; always preempted by previous...
37
+ / [occur S] groupname [genericarg] optcom ; preempted by previous
38
38
  / [occur S] "(" S group S ")" optcom
39
39
 
40
40
  memberkey = type1 S "=>"
@@ -236,9 +236,14 @@ module CDDL
236
236
  vr = where[4]
237
237
  if inmap
238
238
  unless kr
239
- if vr[0] == :grpent
239
+ case vr[0]
240
+ when :grpent
240
241
  fail "grpent in map #{vr.inspect}" unless vr.size == 2
241
- g = generate1(vr[1], true)
242
+ g = Array.new(st) { generate1(vr[1], true) }.flatten(1)
243
+ # warn "GGG #{g.inspect}"
244
+ return g
245
+ when :grpchoice
246
+ g = Array.new(st) { generate1(vr, true) }.flatten(1)
242
247
  # warn "GGG #{g.inspect}"
243
248
  return g
244
249
  else
@@ -448,10 +453,17 @@ module CDDL
448
453
  }
449
454
  when :member
450
455
  unless k
451
- fail "member name not known for group entry #{r} in map" unless v[0] == :grpent
456
+ case v[0]
457
+ when :grpent
458
+ entries = v[1..-1]
459
+ when :grpchoice
460
+ entries = [v]
461
+ else
462
+ fail "member name not known for group entry #{r} in map"
463
+ end
452
464
  d_check1 = d_check.dup
453
- # XXX this is ignoring occur = [s, _e]
454
- return map_check(d, d_check1, v[1..-1]) && d_check.replace(d_check1)
465
+ # XXX this is ignoring occur = [s, _e] FIXME!
466
+ return map_check(d, d_check1, entries) && d_check.replace(d_check1)
455
467
  end
456
468
  # this is mostly quadratic; let's do the linear thing if possible
457
469
  simple, simpleval = extract_value(k)
@@ -832,7 +844,7 @@ module CDDL
832
844
  end
833
845
  when :recurse_grpent # XXX we don't have the entry yet
834
846
  when :member
835
- fail "map entry without member key given: #{member}" unless member[3] || member[4][0] == :grpent # || member[4] == [:grpchoice]
847
+ fail "map entry without member key given: #{member}" unless member[3] || member[4][0] == :grpent || member[4][0] == :grpchoice
836
848
  else
837
849
  fail ["type1 member", member].inspect unless member[0] == :member
838
850
  end
@@ -1237,6 +1237,31 @@ HERE
1237
1237
  assert parser.validate({})
1238
1238
  end
1239
1239
 
1240
+ def test_aaa_validate_more_socket_in_star
1241
+ parser = CDDL::Parser.new <<HERE
1242
+ tcp-header = {seq: uint, ack: uint, * $$tcp-option}
1243
+
1244
+ ; later, in a different file
1245
+
1246
+ $$tcp-option //= (
1247
+ sack: [+(left: uint, right: uint)]
1248
+ )
1249
+
1250
+ ; and, maybe in another file
1251
+
1252
+ $$tcp-option //= (
1253
+ sack-permitted: true
1254
+ )
1255
+ HERE
1256
+ # puts "empty_group_sp AST:"
1257
+ # puts parser.ast_debug
1258
+ # puts "simple_type_augmented RULES:"
1259
+ # pp parser.rules
1260
+ g = parser.generate
1261
+ pp g
1262
+ assert parser.validate(g)
1263
+ end
1264
+
1240
1265
 
1241
1266
  def test_simple_type_augmented_uninitialized
1242
1267
  parser = CDDL::Parser.new <<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.6.0
4
+ version: 0.6.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Carsten Bormann