cddl 0.8.12 → 0.8.13

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
  SHA256:
3
- metadata.gz: 2ede21b4292e6f546745029c7a071eb1af1259366e676d90e19f400dfe089d7a
4
- data.tar.gz: 57ed90f75d58941bd28c5afef7d5eb29eea5d5483a6a3b2c4fc65d49df0370aa
3
+ metadata.gz: bbd414d9d4fbc897f8f31c03437fa57155547c0f02978de2da4f75844cf0e1ef
4
+ data.tar.gz: 9aa239d57c5e70f8352da90cc8023273a2793577df84ee6e003a1ac0fdc200dc
5
5
  SHA512:
6
- metadata.gz: 65de704e842bb6d48265e7024922edf0406d6cb521d2977b07db2926d396b8b2d6bdc103619d579b861cb53b8914b4383e25c2e610e86f7b4d88d89983a64dff
7
- data.tar.gz: c0919845b3ee5bba3b2a5d77f9e182a4a9f1904f187843501abf29954d37033d62f1cfd50545865ba878c92583f26151f9024dc1093c0d4607442038b36008b0
6
+ metadata.gz: 00dac4c95e0b94e0bc3ae775b1bf1ab33a41507bb06774ccaa0838daf6c9fffc0c2d4b3d049199c3ae35858888be853058248c710ea056edd718a0938fd7d8e3
7
+ data.tar.gz: 18ea8731c6ab8ec9ae547331be276b9ca1c58c490c6986969824a0a56c7870478ca01418f8ae83a5504d393c14e9fcc5764bfc0cb65c7f2f267cd1757dfbdbac
@@ -1,6 +1,6 @@
1
1
  spec = Gem::Specification.new do |s|
2
2
  s.name = 'cddl'
3
- s.version = '0.8.12'
3
+ s.version = '0.8.13'
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')
@@ -547,6 +547,16 @@ module CDDL
547
547
  end
548
548
  end
549
549
 
550
+ def extract_array(t)
551
+ return [false] unless t[0] == :array
552
+ [true, *t[1..-1].map { |el|
553
+ return [false] unless el[0..3] == [:member, 1, 1, nil]
554
+ ok, v, vt = extract_value(el[4])
555
+ return [false] unless ok
556
+ [v, vt]
557
+ }]
558
+ end
559
+
550
560
  def validate_diag
551
561
  [@last_data, @last_rule, @last_message]
552
562
  end
@@ -806,7 +816,19 @@ module CDDL
806
816
  ann
807
817
  when :feature
808
818
  ok, v, vt = extract_value(control)
809
- $features[v][d] = true
819
+ if ok
820
+ nm = v
821
+ det = d
822
+ else
823
+ ok, *v = extract_array(control)
824
+ if ok && v.size == 2
825
+ nm = v[0][0]
826
+ det = v[1][0]
827
+ else
828
+ warn "*** feature controller not implemented: #{control.inspect}"
829
+ end
830
+ end
831
+ $features[nm][det] = true
810
832
  ann
811
833
  when :lt, :le, :gt, :ge, :eq, :ne
812
834
  op = OPERATORS[where[1]]
@@ -0,0 +1,5 @@
1
+ foo = {
2
+ kind: bar / baz .feature (["foo-extensions", "bazify"])
3
+ }
4
+ bar = int
5
+ baz = text ; complex stuff that doesn't all need to be in the detail
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cddl
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.12
4
+ version: 0.8.13
5
5
  platform: ruby
6
6
  authors:
7
7
  - Carsten Bormann
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-06-24 00:00:00.000000000 Z
11
+ date: 2020-11-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: cbor-diag
@@ -118,6 +118,7 @@ files:
118
118
  - test-data/dotsize.cddl
119
119
  - test-data/extractor-demo.cddl
120
120
  - test-data/feat1.cddl
121
+ - test-data/feature-detail.cddl
121
122
  - test-data/foo.cddl
122
123
  - test-data/grasp-01-extract.cddl
123
124
  - test-data/grasp-01-test.cddl