cddl 0.12.10 → 0.12.14

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.
Files changed (5) hide show
  1. checksums.yaml +4 -4
  2. data/cddl.gemspec +1 -2
  3. data/data/cddl.abnf +3 -2
  4. data/lib/cddl.rb +22 -3
  5. metadata +3 -6
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 49a1d0bc5804fcc0cc5d3a67b3b6754e917146021043b63fb53de148e568029b
4
- data.tar.gz: ab3c7a943a3d8acf7f557f1f796ca30de5572417ea5bb7ad198edf6453ceed4c
3
+ metadata.gz: a4b5bfb31fd9b7fcf4cf66a1d0f2a76550c9682215c486d99a03997bab1ae30b
4
+ data.tar.gz: 97f11378fb18576f115ffb8cbd668fe9e14e33e91e4aac01d874c69e206f2fbd
5
5
  SHA512:
6
- metadata.gz: e395661ff52a4dd30cfa8e22275c1a247f0ffbe24643a568c431372b7ed86a487ce6d2334cdbe07786e96e0931ed265c653e03c65917a3f82e5b5bdb1046e77b
7
- data.tar.gz: b022f002061187c6d35312e4e9339dcc01b7b7da3a25f536e8789463f7dd0ec070df99e3ccba93e06e267a3ec938725c05301e3331f60cbb0d441f3be379fab3
6
+ metadata.gz: 623f3945c3fff7c04dd2a4e1c77879d585d347092c87b54d5ead6b8fb3ed3c5ab68a58ae67b7f3f936437c8bc9f92dea6f8597509ba8913fbc5e2e47f43d398a
7
+ data.tar.gz: a04d3f282b0d42182f63dd66988fece8fb0ab7ddb4e159b2f8213705503cff0a97b622a172096b881dc4fe70f16bdcc48a51fa035413bc55421bb5e15d1bcda3
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.10'
3
+ s.version = '0.12.14'
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')
@@ -16,7 +16,6 @@ spec = Gem::Specification.new do |s|
16
16
  s.files = Dir['lib/**/*.rb'] + %w(cddl.gemspec) + Dir['data/**/*.abnf'] + Dir['data/**/*.cddl'] + Dir['test-data/**/*.cddl'] + Dir['test/**/*.rb']
17
17
  s.require_path = 'lib'
18
18
  s.executables = ['cddl']
19
- s.default_executable = 'cddl'
20
19
  s.required_ruby_version = '>= 2.3'
21
20
  s.author = "Carsten Bormann"
22
21
  s.email = "cabo@tzi.org"
data/data/cddl.abnf CHANGED
@@ -65,9 +65,10 @@ value = number
65
65
  int = ["-"] uint
66
66
 
67
67
  ; This is a float if it has fraction or exponent; int otherwise
68
- number = int ["." fraction] ["e" exponent ]
68
+ number = hexfloat / (int ["." fraction] ["e" exponent ])
69
+ hexfloat = ["-"] "0x" 1*HEXDIG ["." 1*HEXDIG] "p" exponent
69
70
  fraction = 1*DIGIT
70
- exponent = int
71
+ exponent = ["+"/"-"] 1*DIGIT
71
72
 
72
73
  text = %x22 *SCHAR %x22
73
74
  SCHAR = %x20-21 / %x23-5B / %x5D-7E / NONASCII / SESC
data/lib/cddl.rb CHANGED
@@ -119,6 +119,16 @@ module CDDL
119
119
  r.compact
120
120
  end
121
121
 
122
+ def longest_initial_match(old, now)
123
+ md = /\A(.*)(.*)\n\1(.*)\z/.match([old,now].join("\n"))
124
+ md[1..3]
125
+ end
126
+
127
+ def diff_message(old, now)
128
+ c, l, r = longest_initial_match(old, now)
129
+ "-- common: >#{c}< -- old: >#{l}< -- new: >#{r}<"
130
+ end
131
+
122
132
  def cname(s)
123
133
  s.to_s.gsub(/-/, "_")
124
134
  end
@@ -205,7 +215,8 @@ module CDDL
205
215
  ids = g.children(:id).map(&:to_s)
206
216
  # puts ["ids", ids].inspect
207
217
  if b = @generics[n]
208
- fail "Duplicate generics definition #{n} as #{rule_ast} (was #{b})"
218
+ fail "Duplicate generics definition #{n} #{
219
+ diff_message(strip_nodes(b[0]).inspect, strip_nodes(rule_ast).inspect)}"
209
220
  end
210
221
  @generics[n] = [rule_ast, ids]
211
222
  else
@@ -217,7 +228,7 @@ module CDDL
217
228
  if a == b
218
229
  warn "*** Warning: Identical redefinition of #{n} as #{a}"
219
230
  else
220
- fail "Duplicate rule definition #{n} as #{b} (was #{a})"
231
+ fail "Duplicate rule definition #{n} #{diff_message(b, a)}"
221
232
  end
222
233
  end
223
234
  @rules[n] = rule_ast
@@ -699,6 +710,7 @@ module CDDL
699
710
  fail "Not smart enough to generate #{where}#{@last_message}"
700
711
  when :within, :and
701
712
  try_generate(target) do |content|
713
+ $features ||= Hash.new {|h, k| h[k] = {}}
702
714
  if validate1(content, control)
703
715
  return content
704
716
  elsif conop == :within
@@ -1030,6 +1042,9 @@ module CDDL
1030
1042
  @last_data = d
1031
1043
  @last_rule = where
1032
1044
  ann = nil
1045
+ if CBOR::Tagged === d && d.tag === 888 && ENV["CDDL_888"]
1046
+ return []
1047
+ end
1033
1048
  case where[0]
1034
1049
  when :type1
1035
1050
  if where[1..-1].any? {|r| ann = validate1a(d, r)}
@@ -1561,7 +1576,11 @@ module CDDL
1561
1576
  end
1562
1577
  }
1563
1578
  end
1564
- val = eval(s)
1579
+ if s =~ /p.*\d\z/ # hexfloat
1580
+ val = s.scanf("%a").first
1581
+ else
1582
+ val = eval(s)
1583
+ end
1565
1584
  # warn val
1566
1585
  case val
1567
1586
  when Integer; [:int, val]
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cddl
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.12.10
4
+ version: 0.12.14
5
5
  platform: ruby
6
6
  authors:
7
7
  - Carsten Bormann
8
- autorequire:
9
8
  bindir: bin
10
9
  cert_chain: []
11
- date: 2025-01-09 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: cbor-diag
@@ -277,7 +276,6 @@ homepage: https://www.rfc-editor.org/rfc/rfc8610#appendix-F
277
276
  licenses:
278
277
  - MIT
279
278
  metadata: {}
280
- post_install_message:
281
279
  rdoc_options: []
282
280
  require_paths:
283
281
  - lib
@@ -292,8 +290,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
292
290
  - !ruby/object:Gem::Version
293
291
  version: '0'
294
292
  requirements: []
295
- rubygems_version: 3.5.14
296
- signing_key:
293
+ rubygems_version: 4.0.8
297
294
  specification_version: 4
298
295
  summary: CDDL generator and validator.
299
296
  test_files: []