edn-abnf 0.5.37 → 0.5.39

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: e0f64289932889f6db2279a914988e7216a97977abaa03d7cf94ce185d7318c2
4
- data.tar.gz: 619f9b5f1e029409c668eb5a43794523519f8a8789d69bc918264ab74f8cfe4f
3
+ metadata.gz: 17c5fde6eec17c35da2e94196c5eb582ef05e8586c997c38b989f044460c9a03
4
+ data.tar.gz: 964e47d82a247a6b17a0b479a8b2ac1dacf284baa5068a4458938726980de944
5
5
  SHA512:
6
- metadata.gz: '05696d0f506625417e09b429819aee2c6905d6250b85f8e8df48b66922ccea56db6c5ecc0b6657bc383daa3c9170aa9b5b5c14bc59d32eab20d80f00ce8ad7fa'
7
- data.tar.gz: dbdf3d08c3ad50af80f0285692fd655855419e38e88e0e6aab9561262fce195296f9c2c96465fd2a6fe8ad46df8f79f6478a28c1b54e7dfcb4c33e8bbe16f0f8
6
+ metadata.gz: 1d1b16c8fcc99e5cad651830b0ddb515b1321b2f177951376128fc26fc62fd5afbf1848a119876ad54557042192dea72a679bffc3b4d1bd515bc41b2520c4558
7
+ data.tar.gz: 8bc3c115e0b0576c4796d65846064747a7254fd9e9082ca4a99048d3130f485134a8fdd5a40d677a2239b50acb7b3a9d69c69c0a0c52609f43ecbc8a71881a4e
data/bin/edn-abnf CHANGED
@@ -104,6 +104,9 @@ begin
104
104
  opts.on("-f", "--[no-]fallback", "use tag 999 for unknown app-extensions") do |v|
105
105
  $options.fallback = v
106
106
  end
107
+ opts.on("-b", "--[no-]brace", "retry parsind with braces around added") do |v|
108
+ $options.brace = v
109
+ end
107
110
  opts.on("-wCOL", "--wrap=COL", Integer, "EDN: wrap at column COL") do |v|
108
111
  $options.wrap = v
109
112
  end
@@ -200,7 +203,15 @@ begin
200
203
  if $options.cbor
201
204
  result = CBOR.decode(edn_file)
202
205
  else
203
- edn = EDN.from_edn(edn_file)
206
+ if $options.brace
207
+ begin
208
+ edn = EDN.from_edn(edn_file)
209
+ rescue ArgumentError # Parse error
210
+ edn = EDN.from_edn("{\n" + edn_file + "}\n")
211
+ end
212
+ else
213
+ edn = EDN.from_edn(edn_file)
214
+ end
204
215
  result = edn.tree # XXX .tree?
205
216
  end
206
217
  rescue CBOR_DIAG::AppParseError, ArgumentError => e
data/edn-abnf.gemspec CHANGED
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = "edn-abnf"
3
- s.version = "0.5.37"
3
+ s.version = "0.5.39"
4
4
  s.summary = "CBOR Extended Diagnostic Notation (EDN) implemented in ABNF"
5
5
  s.description = %q{edn-abnf implements converters and miscellaneous tools for CBOR EDN's ABNF}
6
6
  s.author = "Carsten Bormann"
@@ -64,6 +64,9 @@ module CBOR
64
64
  end
65
65
 
66
66
  class Xbox < Box
67
+ def encoding; value.encoding end
68
+ def size; value.size end
69
+ def b; value.b end
67
70
  def to_cbor
68
71
  enc = CBOR.encode(value)
69
72
  if ei = options[:ei]
@@ -0,0 +1,32 @@
1
+ require "cbor-diagnostic-app/0"
2
+
3
+ class CBOR_DIAG::Helper
4
+ def self.decode_string(app_prefix, s, to_text = false)
5
+ ret = if CBOR::Sequence === s
6
+ args = s.elements
7
+ else
8
+ args = [s]
9
+ end.map { |el|
10
+ unless String === el || el.respond_to?(:value) && String === el.value
11
+ raise ArgumentError.new("cbor-diagnostic: #{app_prefix}<<>>: #{el.cbor_diagnostic} not a string: Argument Error")
12
+ end
13
+ el.b
14
+ }.join.b # .b needed so empty array becomes byte string, too
15
+ if to_text
16
+ ret = ret.force_encoding(Encoding::UTF_8)
17
+ end
18
+ ret
19
+ end
20
+ end
21
+
22
+ class CBOR_DIAG::App_b1
23
+ def self.decode(app_prefix, s)
24
+ CBOR_DIAG::Helper.decode_string(app_prefix, s, false)
25
+ end
26
+ end
27
+
28
+ class CBOR_DIAG::App_t1
29
+ def self.decode(app_prefix, s)
30
+ CBOR_DIAG::Helper.decode_string(app_prefix, s, true)
31
+ end
32
+ end
@@ -111,8 +111,9 @@ class Treetop::Runtime::SyntaxNode
111
111
  end
112
112
  end
113
113
 
114
-
115
- require 'cbor-diagnostic-app/dt'
116
- require 'cbor-diagnostic-app/ip'
114
+ # MTI app-extensions:
117
115
  require 'cbor-diagnostic-app/h'
118
116
  require 'cbor-diagnostic-app/b64'
117
+ require 'cbor-diagnostic-app/dt'
118
+ require 'cbor-diagnostic-app/ip'
119
+ require 'cbor-diagnostic-app/t1_b1'
@@ -4792,7 +4792,12 @@ module EDNGRAMMAR
4792
4792
  unless Set[*strings.map(&:encoding)].size == 1
4793
4793
  warn "*** mixed streamstring #{strings.cbor_diagnostic}"
4794
4794
  end
4795
- strings.join.cbor_stream!(strings.map(&:size))
4795
+ strings.each do |s|
4796
+ if CBOR::Xbox === s && (ei = s.options[:ei])
4797
+ warn "*** unimplemented encoding indicator #{ei.inspect} for #{s.inspect}"
4798
+ end
4799
+ end
4800
+ strings.join.cbor_stream!(strings.map(&:size)) # XXX loses EI
4796
4801
  end
4797
4802
  end
4798
4803
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: edn-abnf
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.37
4
+ version: 0.5.39
5
5
  platform: ruby
6
6
  authors:
7
7
  - Carsten Bormann
@@ -112,6 +112,7 @@ files:
112
112
  - lib/cbor-diagnostic-app/hgrammar.rb
113
113
  - lib/cbor-diagnostic-app/ip.rb
114
114
  - lib/cbor-diagnostic-app/ipgrammar.rb
115
+ - lib/cbor-diagnostic-app/t1_b1.rb
115
116
  - lib/cbor-diagnostic-app/zzz.rb
116
117
  - lib/edn-abnf.rb
117
118
  - lib/parser/edn-util.rb