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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4939bdcbf4646dc3e2606b7590db6967cc5ccdb0fcb3ac278376b2393baefef2
4
- data.tar.gz: ee4e8dc9a948843a3ad4ee3adbc9a128c3de921a5c2056c8d91c82ecbdf85372
3
+ metadata.gz: e57d91298d6da2ed2f30060754b3c54f36ebdbf967e6e4e5f3e164fd8dfe2004
4
+ data.tar.gz: c1f33e309cee195a2438d4e840fcef8748de4f50625f55ec15dbb154e1b43994
5
5
  SHA512:
6
- metadata.gz: 07360a1f513c23f9cabb0f64a870bbd961cc336f722b7d857f6d9e92dd47d8fe328899772dcd27afa24af47085e579c8a029ed4d02b8cbecb95b7af7ea2d50cf
7
- data.tar.gz: 9dbf6d31bb5656b958274ec32d39bb76ebaf57e015cd819487f48c752b2d786667166f78f9d822322cfba6c7750a5559dc2baf8e938c42e4ce35b7bf3d509dd0
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.16'
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}"
@@ -0,0 +1,3 @@
1
+ foo = text .abnf '4DIGIT
2
+ DIGIT = %x30-39 ; 0-9
3
+ '
@@ -0,0 +1,2 @@
1
+ foo = text .regexp myregexp
2
+ myregexp = "A" .cat "B"
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.16
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-15 00:00:00.000000000 Z
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