cddl 0.12.10 → 0.12.12

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 -1
  3. data/data/cddl.abnf +3 -2
  4. data/lib/cddl.rb +18 -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: 8117d826af4d671a70b877f6df0acdcb060484c67f9d689493fe0d7bfa4cf360
4
+ data.tar.gz: 1b94c55c7f7029b79d17ad986c3deb8ce096604532775761995500874cd98f30
5
5
  SHA512:
6
- metadata.gz: e395661ff52a4dd30cfa8e22275c1a247f0ffbe24643a568c431372b7ed86a487ce6d2334cdbe07786e96e0931ed265c653e03c65917a3f82e5b5bdb1046e77b
7
- data.tar.gz: b022f002061187c6d35312e4e9339dcc01b7b7da3a25f536e8789463f7dd0ec070df99e3ccba93e06e267a3ec938725c05301e3331f60cbb0d441f3be379fab3
6
+ metadata.gz: 7df99dd63776070f3c428c14a13e7c75abf04b4e6a1b73399bad3fec2be7accbfacef1becd5da293e840afd2a25e43614e20b9e59d78eccbb6481b0da487215d
7
+ data.tar.gz: d9c8e8896cd9363799a2fe167cfc1698f1c84aa248a7e57f32df0df4bf8b117b22f4631dd5958dd789ed5db47ae4f28aac4786d57c1a58cafe49c02f6c68a4ca
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.12'
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
@@ -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
@@ -1561,7 +1572,11 @@ module CDDL
1561
1572
  end
1562
1573
  }
1563
1574
  end
1564
- val = eval(s)
1575
+ if s =~ /p.*\d\z/ # hexfloat
1576
+ val = s.scanf("%a").first
1577
+ else
1578
+ val = eval(s)
1579
+ end
1565
1580
  # warn val
1566
1581
  case val
1567
1582
  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.12
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: 3.7.2
297
294
  specification_version: 4
298
295
  summary: CDDL generator and validator.
299
296
  test_files: []