cddl 0.8.16 → 0.8.17

Sign up to get free protection for your applications and to get access to all the features.
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