cddl 0.8.16 → 0.8.17
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 +2 -1
- data/lib/cddl.rb +29 -1
- data/test-data/abnf1.cddl +3 -0
- data/test-data/cat-re.cddl +2 -0
- metadata +18 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e57d91298d6da2ed2f30060754b3c54f36ebdbf967e6e4e5f3e164fd8dfe2004
|
4
|
+
data.tar.gz: c1f33e309cee195a2438d4e840fcef8748de4f50625f55ec15dbb154e1b43994
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 871fba7d4ec1b1d94a28149c3c9f9c9cdc4e60ddadb9d503f9ada96b35809534ed576865133f5a78c8645f1cce67f03ef04c799528c5dfa18752398d7e193302
|
7
|
+
data.tar.gz: df38f1006d6c36782609681c994fd09c8b0eb8a23d35d8de57dcd6b252a18d97d05ef42b776b276b56359e8ee212b25e923e6b337c0944a7646e7770d36b6696
|
data/cddl.gemspec
CHANGED
@@ -1,11 +1,12 @@
|
|
1
1
|
spec = Gem::Specification.new do |s|
|
2
2
|
s.name = 'cddl'
|
3
|
-
s.version = '0.8.
|
3
|
+
s.version = '0.8.17'
|
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')
|
7
7
|
s.add_dependency('abnc')
|
8
8
|
s.add_dependency('json')
|
9
|
+
s.add_dependency('abnftt')
|
9
10
|
s.add_dependency('regexp-examples') # , '1.1.0')
|
10
11
|
s.add_dependency('colorize')
|
11
12
|
s.files = `git ls-files`.split("\n").grep(/^[a-z]/)
|
data/lib/cddl.rb
CHANGED
@@ -3,6 +3,7 @@ require 'pp'
|
|
3
3
|
require 'pathname'
|
4
4
|
require 'cbor-pure' unless defined?(CBOR::Tagged)
|
5
5
|
require 'regexp-examples'
|
6
|
+
require 'abnftt'
|
6
7
|
require 'colorize'
|
7
8
|
require 'base64'
|
8
9
|
|
@@ -249,6 +250,11 @@ module CDDL
|
|
249
250
|
h[k] = Regexp.new("\\A#{k}\\z")
|
250
251
|
}
|
251
252
|
|
253
|
+
ABNF_PARSER_FOR_STRING = Hash.new {|h, k|
|
254
|
+
grammar = "cddl-t0p--1eve1-f0r--abnf = " << k # XXX
|
255
|
+
h[k] = ABNF.from_abnf(grammar)
|
256
|
+
}
|
257
|
+
|
252
258
|
def generate
|
253
259
|
@recursion = 0
|
254
260
|
generate1(rules)
|
@@ -504,6 +510,12 @@ module CDDL
|
|
504
510
|
fail "Don't know yet how to generate #{where}"
|
505
511
|
end
|
506
512
|
REGEXP_FOR_STRING[regexp].random_example(max_repeater_variance: 5)
|
513
|
+
when :abnf
|
514
|
+
grammar = generate1(control)
|
515
|
+
unless target == [:prim, 3] && String === grammar
|
516
|
+
fail "Don't know yet how to generate #{where}"
|
517
|
+
end
|
518
|
+
ABNF_PARSER_FOR_STRING[grammar].generate
|
507
519
|
when :cbor, :cborseq
|
508
520
|
unless target == [:prim, 2]
|
509
521
|
fail "Don't know yet how to generate #{where}"
|
@@ -896,6 +908,22 @@ module CDDL
|
|
896
908
|
end
|
897
909
|
end
|
898
910
|
)
|
911
|
+
when :abnf # XXX .abnf vs. .abnfb
|
912
|
+
ann if (
|
913
|
+
if String === d
|
914
|
+
ok, v, vt = extract_value(control)
|
915
|
+
if ok && vt == String
|
916
|
+
begin
|
917
|
+
ABNF_PARSER_FOR_STRING[v].validate(d)
|
918
|
+
true
|
919
|
+
rescue => e
|
920
|
+
# warn "*** #{e}" # XXX
|
921
|
+
@last_message = e
|
922
|
+
nil
|
923
|
+
end
|
924
|
+
end
|
925
|
+
end
|
926
|
+
)
|
899
927
|
when :cbor
|
900
928
|
ann if validate1((CBOR::decode(d) rescue :BAD_CBOR), control)
|
901
929
|
when :cborseq
|
@@ -1250,7 +1278,7 @@ module CDDL
|
|
1250
1278
|
BRACE = {"{" => :map, "[" => :array}
|
1251
1279
|
RANGE_EXCLUDE_END = {".." => false, "..." => true}
|
1252
1280
|
SUPPORTED_ANNOTATIONS = [:bits, :size, :regexp, :cbor, :cborseq, :within, :and,
|
1253
|
-
:default, :lt, :le, :gt, :ge, :eq, :ne, :feature, :cat, :plus]
|
1281
|
+
:default, :lt, :le, :gt, :ge, :eq, :ne, :feature, :abnf, :cat, :plus]
|
1254
1282
|
|
1255
1283
|
def type1(n, canbegroup = false)
|
1256
1284
|
# puts "NVALUE #{n.value.inspect}"
|
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.
|
4
|
+
version: 0.8.17
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Carsten Bormann
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-02-
|
11
|
+
date: 2021-02-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: cbor-diag
|
@@ -52,6 +52,20 @@ dependencies:
|
|
52
52
|
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: abnftt
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
55
69
|
- !ruby/object:Gem::Dependency
|
56
70
|
name: regexp-examples
|
57
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -100,6 +114,7 @@ files:
|
|
100
114
|
- test-data/7807.cddl
|
101
115
|
- test-data/a.cddl
|
102
116
|
- test-data/abignum.cddl
|
117
|
+
- test-data/abnf1.cddl
|
103
118
|
- test-data/ambig.cddl
|
104
119
|
- test-data/b.cddl
|
105
120
|
- test-data/badaddr.cddl
|
@@ -107,6 +122,7 @@ files:
|
|
107
122
|
- test-data/bpv7.cddl
|
108
123
|
- test-data/bpv7a.cddl
|
109
124
|
- test-data/bpv7b.cddl
|
125
|
+
- test-data/cat-re.cddl
|
110
126
|
- test-data/cdni-ct.cddl
|
111
127
|
- test-data/coral.cddl
|
112
128
|
- test-data/coral1.cddl
|