cddl 0.8.12 → 0.8.13

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