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.
- checksums.yaml +4 -4
- data/cddl.gemspec +1 -2
- data/data/cddl.abnf +3 -2
- data/lib/cddl.rb +22 -3
- metadata +3 -6
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: a4b5bfb31fd9b7fcf4cf66a1d0f2a76550c9682215c486d99a03997bab1ae30b
|
|
4
|
+
data.tar.gz: 97f11378fb18576f115ffb8cbd668fe9e14e33e91e4aac01d874c69e206f2fbd
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
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.
|
|
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 =
|
|
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}
|
|
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}
|
|
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
|
-
|
|
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.
|
|
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:
|
|
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:
|
|
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: []
|