cddl 0.12.1 → 0.12.3

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: a29d5d85e11598502b09d04e3b08a7ada9b6d0d8a9eb0e425bb01da81b92532b
4
- data.tar.gz: 61c2a191c264c34600f0b66a8e7cfb2ea1359f3954676828a56a63aa25e3015c
3
+ metadata.gz: b43f61521d3730b97b25f84b2d978fad5ee52034a4e106f524c90c2457c1f6f3
4
+ data.tar.gz: b0750334302b1feabc654b5d69ea0feedf969997f403ab7fd96db0eb76213b6d
5
5
  SHA512:
6
- metadata.gz: 671d119f1cb328151c0631cbcd808f5a32d1f82d6c715a64cb5e5c9702b3452c996278a6b5055613de74b00f76489a9874037b336ac3a760947d4a2526d84cc9
7
- data.tar.gz: 8146d9b66bb87e84b2179507fb9144012676be726dd5f4312da2482a047e46429a6d41d5b1d49097724aa8cfd68519be06e6e8f860e97f0cbc187de0c20242ca
6
+ metadata.gz: 5e96654b3760ed3a0b104f64b9f6f431b562a6ce1c40d4df887af646e6fe906f879c8fccf24ff5fb0090e3e5daefcd22e22290cee9dc87802fc7581c7e4257dd
7
+ data.tar.gz: ad3fb0fc1c243463575274678efeb2ee28c54303bc0db07e146e0742d77800af41d159683885c6d90d84a2f94685c4443a237cb31406bd8e3f513c3367e05af1
data/bin/cddl CHANGED
@@ -22,6 +22,13 @@ def usage
22
22
  exit EX_USAGE
23
23
  end
24
24
 
25
+ def utfify(s)
26
+ s.force_encoding(Encoding::UTF_8).scrub { |c|
27
+ warn "*** replaced invalid UTF-8 byte sequence #{c.inspect} by U+FFFD REPLACEMENT CHARACTER"
28
+ 0xFFFD.chr(Encoding::UTF_8)
29
+ }
30
+ end
31
+
25
32
  def read_arg(arg, remember_fn = true)
26
33
  if arg == "-"
27
34
  $fn = "(stdin)" if remember_fn
@@ -29,15 +36,12 @@ def read_arg(arg, remember_fn = true)
29
36
  else
30
37
  usage unless arg
31
38
  $fn = arg if remember_fn
32
- File.read(arg, mode: "rb").force_encoding(Encoding::UTF_8).scrub { |c|
33
- warn "*** replaced invalid UTF-8 byte sequence #{c.inspect} by U+FFFD REPLACEMENT CHARACTER"
34
- 0xFFFD.chr(Encoding::UTF_8)
35
- }
39
+ File.read(arg, mode: "rb")
36
40
  end
37
41
  end
38
42
 
39
43
  def parser
40
- @parser ||= CDDL::Parser.new(read_arg(ARGV[0], false))
44
+ @parser ||= CDDL::Parser.new(utfify(read_arg(ARGV[0], false)))
41
45
  end
42
46
 
43
47
  def my_pp(v)
@@ -102,7 +106,12 @@ begin
102
106
  instance = if $sequence
103
107
  CBOR.decode("\x9f".b << instance.b << "\xff".b)
104
108
  else
105
- CBOR.decode(instance.b) rescue JSON.load(instance)
109
+ begin
110
+ CBOR.decode(instance.b)
111
+ rescue => e
112
+ warn e.inspect if verbose
113
+ JSON.load(utfify(instance))
114
+ end
106
115
  end
107
116
  instance = instance.cbor_clone if $annotate && ENV["EXPERIMENTAL_ANNOTATE"]
108
117
  warn "#{fn}:" if verbose
@@ -110,6 +119,7 @@ begin
110
119
  # my_pp ann
111
120
  instance.cbor_add_annotations_from(ann) rescue nil
112
121
  my_diag(instance) if $annotate
122
+ warn "ann: #{!!ann}" if verbose
113
123
  unless ann
114
124
  retcode = 1
115
125
  end
data/cddl.gemspec CHANGED
@@ -1,6 +1,6 @@
1
1
  spec = Gem::Specification.new do |s|
2
2
  s.name = 'cddl'
3
- s.version = '0.12.1'
3
+ s.version = '0.12.3'
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')
data/data/cddl.abnf CHANGED
@@ -41,7 +41,7 @@ grpent = [occur S] [memberkey S] type optcom
41
41
  / [occur S] groupname [genericarg] optcom ; preempted by above
42
42
  / [occur S] "(" S group S ")" optcom
43
43
 
44
- memberkey = type1 S "=>"
44
+ memberkey = type1 S ["^" S] "=>"
45
45
  / bareword S ":"
46
46
  / value S ":"
47
47
 
@@ -0,0 +1,16 @@
1
+ cwt = [
2
+ bstr .cbor protected-map,
3
+ unprotected-map,
4
+ bstr .cbor payload-map,
5
+ bstr ; signature
6
+ ]
7
+
8
+ protected-map = {
9
+ &(alg: 1) => int,
10
+ ? &(typ: 16) => text,
11
+ * key => any
12
+ }
13
+
14
+ unprotected-map = ()
15
+ key = "key"
16
+ payload-map = { payload: "map"}
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.12.1
4
+ version: 0.12.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Carsten Bormann
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-05-16 00:00:00.000000000 Z
11
+ date: 2024-06-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: cbor-diag
@@ -263,6 +263,7 @@ files:
263
263
  - test-data/toerless0.cddl
264
264
  - test-data/toerless1.cddl
265
265
  - test-data/two_anonymous_groups.cddl
266
+ - test-data/valemb.cddl
266
267
  - test-data/wrong1.cddl
267
268
  - test-data/wrong1a.cddl
268
269
  - test-data/wrong2.cddl
@@ -290,7 +291,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
290
291
  - !ruby/object:Gem::Version
291
292
  version: '0'
292
293
  requirements: []
293
- rubygems_version: 3.5.9
294
+ rubygems_version: 3.5.11
294
295
  signing_key:
295
296
  specification_version: 4
296
297
  summary: CDDL generator and validator.