cbor-diag 0.6.3 → 0.7.0

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: aeb38c1e59dd1701b41b72b2bb232a6a51d43a75b30e77b5e269825fd39211d5
4
- data.tar.gz: 4c0c047f677f11812efb56acf1383b5772c716cfffab33e09f82b513fc8b12ef
3
+ metadata.gz: d46971cb4fe65291d5659c969853e2776bc803a4260d3831107ee5b801c0fc76
4
+ data.tar.gz: e54c7b33742851467b3b631220a65558f5493c61eb011a973a5283191d4cbe0c
5
5
  SHA512:
6
- metadata.gz: 05677c580fb68683da31074517d9b34e295347b1741bb05a2584b7736bdc43898b9114866deef5cbfbb0d2f741567c2ad8c189f95c80839acf3dd0f9aedba5ef
7
- data.tar.gz: af9a7d645cfaadf0668b9d3f1cdbc43c35771258f65530853d862e679efe83bb02c04bf594bc3bd1d9dc030f452e87f3bd7549f9c96bc7863b29e955d6ae2f9a
6
+ metadata.gz: bbc73e462fd6fa8a3e44255d4d85847512a320a2e75d141c657849cd21fd1c975429fcaea9798e257ffb681bebec3c6f19d1f50461cc8f36b04a73592ba61fc8
7
+ data.tar.gz: dad9a127145e629293892154b6b7e51dde44151138f7596f006226ed238a6bc74740f291b40818123d435a25b0f6eb739cb67a8c7c74f3c1c49cd4ab207fe386
data/bin/cbor2diag.rb CHANGED
@@ -4,19 +4,11 @@ require 'cbor-packed'
4
4
  require 'cbor-deterministic'
5
5
  require 'cbor-canonical'
6
6
 
7
- options = ''
8
- while /\A-([cdetpqu]+)\z/ === ARGV[0]
9
- options << $1
10
- ARGV.shift
11
- end
7
+
8
+ require 'cbor-diagnostic-helper'
9
+ options = cbor_diagnostic_process_args("cdetpqu")
12
10
 
13
11
  ARGF.binmode
14
12
  i = ARGF.read
15
13
  o = CBOR.decode(i)
16
- o = o.to_packed_cbor if /p/ === options
17
- o = o.to_unpacked_cbor if /q/ === options
18
- o = o.cbor_pre_canonicalize if /c/ === options
19
- o = o.cbor_prepare_deterministic if /d/ === options
20
- puts o.cbor_diagnostic(try_decode_embedded: /e/ === options,
21
- bytes_as_text: /t/ === options,
22
- utf8: /u/ === options)
14
+ puts cbor_diagnostic_output(o, options)
data/bin/cbor2json.rb CHANGED
@@ -5,19 +5,14 @@ require 'cbor-packed'
5
5
  require 'cbor-deterministic'
6
6
  require 'cbor-canonical'
7
7
 
8
- options = ''
9
- while /\A-([cdpqj]+)\z/ === ARGV[0]
10
- options << $1
11
- ARGV.shift
12
- end
8
+
9
+ require 'cbor-diagnostic-helper'
10
+ options = cbor_diagnostic_process_args("cdpqj")
13
11
 
14
12
  ARGF.binmode
15
13
  i = ARGF.read
16
14
  o = CBOR.decode(i)
17
- o = o.to_packed_cbor if /p/ === options
18
- o = o.to_unpacked_cbor if /q/ === options
19
- o = o.cbor_pre_canonicalize if /c/ === options
20
- o = o.cbor_prepare_deterministic if /d/ === options
15
+ o = cbor_diagnostic_item_processing(o, options)
21
16
  if /j/ === options
22
17
  require 'cbor-transform-j'
23
18
  o = CBOR::Transform_j.new.transform(o)
data/bin/cbor2yaml.rb CHANGED
@@ -12,17 +12,11 @@ class Array
12
12
  end
13
13
  end
14
14
 
15
- options = ''
16
- while /\A-([cdpq]+)\z/ === ARGV[0]
17
- options << $1
18
- ARGV.shift
19
- end
15
+ require 'cbor-diagnostic-helper'
16
+ options = cbor_diagnostic_process_args("cdpq")
20
17
 
21
18
  ARGF.binmode
22
19
  i = ARGF.read
23
20
  o = CBOR.decode(i)
24
- o = o.to_packed_cbor if /p/ === options
25
- o = o.to_unpacked_cbor if /q/ === options
26
- o = o.cbor_prepare_deterministic if /d/ === options
27
- o = o.cbor_pre_canonicalize if /c/ === options
21
+ o = cbor_diagnostic_item_processing(o, options)
28
22
  puts YAML.dump(o)
@@ -4,11 +4,8 @@ require 'cbor-packed'
4
4
  require 'cbor-deterministic'
5
5
  require 'cbor-canonical'
6
6
 
7
- options = ''
8
- while /\A-([cdetpqu]+)\z/ === ARGV[0]
9
- options << $1
10
- ARGV.shift
11
- end
7
+ require 'cbor-diagnostic-helper'
8
+ options = cbor_diagnostic_process_args("cdetpqu")
12
9
 
13
10
  ARGF.binmode
14
11
  i = ARGF.read
@@ -16,10 +13,4 @@ o,r = CBOR.decode_with_rest(i)
16
13
  if r != ''
17
14
  warn "** ignoring rest of #{r.bytesize} bytes after first CBOR data item"
18
15
  end
19
- o = o.to_packed_cbor if /p/ === options
20
- o = o.to_unpacked_cbor if /q/ === options
21
- o = o.cbor_prepare_deterministic if /d/ === options
22
- o = o.cbor_pre_canonicalize if /c/ === options
23
- puts o.cbor_diagnostic(try_decode_embedded: /e/ === options,
24
- bytes_as_text: /t/ === options,
25
- utf8: /u/ === options)
16
+ puts cbor_diagnostic_output(o, options)
data/bin/cborseq2diag.rb CHANGED
@@ -4,11 +4,8 @@ require 'cbor-packed'
4
4
  require 'cbor-deterministic'
5
5
  require 'cbor-canonical'
6
6
 
7
- options = ''
8
- while /\A-([cdetpqu]+)\z/ === ARGV[0]
9
- options << $1
10
- ARGV.shift
11
- end
7
+ require 'cbor-diagnostic-helper'
8
+ options = cbor_diagnostic_process_args("cdetpqu")
12
9
 
13
10
  ARGF.binmode
14
11
  i = ARGF.read
@@ -20,13 +17,7 @@ while !i.empty?
20
17
  puts "/ *** Garbage at byte #{totalsize-i.bytesize}: #{e.message} /"
21
18
  exit 1
22
19
  end
23
- o = o.to_packed_cbor if /p/ === options
24
- o = o.to_unpacked_cbor if /q/ === options
25
- o = o.cbor_pre_canonicalize if /c/ === options
26
- o = o.cbor_prepare_deterministic if /d/ === options
27
- out = o.cbor_diagnostic(try_decode_embedded: /e/ === options,
28
- bytes_as_text: /t/ === options,
29
- utf8: /u/ === options)
20
+ out = cbor_diagnostic_output(o, options)
30
21
  if i.empty?
31
22
  puts out
32
23
  else
data/bin/cborseq2json.rb CHANGED
@@ -4,19 +4,13 @@ require 'cbor-pure'
4
4
  require 'cbor-deterministic'
5
5
  require 'cbor-canonical'
6
6
 
7
- options = ''
8
- while /\A-([cdpq]+)\z/ === ARGV[0]
9
- options << $1
10
- ARGV.shift
11
- end
7
+ require 'cbor-diagnostic-helper'
8
+ options = cbor_diagnostic_process_args("cdpq")
12
9
 
13
10
  ARGF.binmode
14
11
  i = ARGF.read
15
12
  while i != ''
16
13
  o, i = CBOR.decode_with_rest(i)
17
- o = o.to_packed_cbor if /p/ === options
18
- o = o.to_unpacked_cbor if /q/ === options
19
- o = o.cbor_pre_canonicalize if /c/ === options
20
- o = o.cbor_prepare_deterministic if /d/ === options
14
+ o = cbor_diagnostic_item_processing(o, options)
21
15
  puts JSON.pretty_generate(o)
22
16
  end
@@ -5,19 +5,14 @@ require 'neatjson'
5
5
  require 'cbor-deterministic'
6
6
  require 'cbor-canonical'
7
7
 
8
- options = ''
9
- while /\A-([cdpq]+)\z/ === ARGV[0]
10
- options << $1
11
- ARGV.shift
12
- end
8
+
9
+ require 'cbor-diagnostic-helper'
10
+ options = cbor_diagnostic_process_args("cdpq")
13
11
 
14
12
  ARGF.binmode
15
13
  i = ARGF.read
16
14
  while i != ''
17
15
  o, i = CBOR.decode_with_rest(i)
18
- o = o.to_packed_cbor if /p/ === options
19
- o = o.to_unpacked_cbor if /q/ === options
20
- o = o.cbor_pre_canonicalize if /c/ === options
21
- o = o.cbor_prepare_deterministic if /d/ === options
16
+ o = cbor_diagnostic_item_processing(o, options)
22
17
  puts JSON.neat_generate(o, after_comma: 1, after_colon: 1)
23
18
  end
data/bin/cborseq2yaml.rb CHANGED
@@ -12,21 +12,17 @@ class Array
12
12
  end
13
13
  end
14
14
 
15
- options = ''
16
- while /\A-([cdpq]+)\z/ === ARGV[0]
17
- options << $1
18
- ARGV.shift
19
- end
15
+
16
+
17
+ require 'cbor-diagnostic-helper'
18
+ options = cbor_diagnostic_process_args("cdpq")
20
19
 
21
20
 
22
21
  ARGF.binmode
23
22
  i = ARGF.read
24
23
  while i != ''
25
24
  o, i = CBOR.decode_with_rest(i)
26
- o = o.to_packed_cbor if /p/ === options
27
- o = o.to_unpacked_cbor if /q/ === options
28
- o = o.cbor_pre_canonicalize if /c/ === options
29
- o = o.cbor_prepare_deterministic if /d/ === options
25
+ o = cbor_diagnostic_item_processing(o, options)
30
26
  puts YAML.dump(o)
31
27
  end
32
28
 
data/bin/diag2cbor.rb CHANGED
@@ -7,6 +7,9 @@ unless ''.respond_to? :b
7
7
  end
8
8
  require 'cbor-pretty'
9
9
 
10
+ require 'cbor-diagnostic-helper'
11
+ options = cbor_diagnostic_process_args("X") # XXX
12
+
10
13
  parser = CBOR_DIAGParser.new
11
14
 
12
15
  $stdout.binmode
data/bin/diag2diag.rb CHANGED
@@ -7,25 +7,9 @@ unless ''.respond_to? :b
7
7
  end
8
8
  require 'cbor-pretty'
9
9
  require 'cbor-diagnostic'
10
- require 'cbor-packed'
11
- require 'cbor-deterministic'
12
- require 'cbor-canonical'
13
10
 
14
- options = ''
15
- while /\A-([cdetpqu]+)\z/ === ARGV[0]
16
- options << $1
17
- ARGV.shift
18
- end
19
-
20
- def diagnostic(o, options)
21
- o = o.to_packed_cbor if /p/ === options
22
- o = o.to_unpacked_cbor if /q/ === options
23
- o = o.cbor_pre_canonicalize if /c/ === options
24
- o = o.cbor_prepare_deterministic if /d/ === options
25
- puts o.cbor_diagnostic(try_decode_embedded: /e/ === options,
26
- bytes_as_text: /t/ === options,
27
- utf8: /u/ === options)
28
- end
11
+ require 'cbor-diagnostic-helper'
12
+ options = cbor_diagnostic_process_args("cdetpqu")
29
13
 
30
14
  parser = CBOR_DIAGParser.new
31
15
 
@@ -37,8 +21,8 @@ if result = parser.parse(i)
37
21
  decoded.elements
38
22
  else
39
23
  [decoded]
40
- end.map {|x| diagnostic(x, options)}.join(", ")
41
- print out
24
+ end.map {|x| cbor_diagnostic_output(x, options)}.join(", ")
25
+ puts out
42
26
  else
43
27
  puts "*** can't parse #{i}"
44
28
  puts "*** #{parser.failure_reason}"
data/bin/diag2pretty.rb CHANGED
@@ -4,6 +4,9 @@ require 'treetop'
4
4
  require 'cbor-diag-parser'
5
5
  require 'cbor-pretty'
6
6
 
7
+ require 'cbor-diagnostic-helper'
8
+ options = cbor_diagnostic_process_args("X") # XXX
9
+
7
10
  parser = CBOR_DIAGParser.new
8
11
 
9
12
  i = ARGF.read
data/bin/json2cbor.rb CHANGED
@@ -5,11 +5,9 @@ require 'cbor-packed'
5
5
  require 'cbor-deterministic'
6
6
  require 'cbor-canonical'
7
7
 
8
- options = ''
9
- while /\A-([cdpqvj]+)\z/ === ARGV[0]
10
- options << $1
11
- ARGV.shift
12
- end
8
+
9
+ require 'cbor-diagnostic-helper'
10
+ options = cbor_diagnostic_process_args("cdpqvj")
13
11
 
14
12
  $stdout.binmode
15
13
  i = ARGF.read
@@ -18,10 +16,7 @@ if /j/ === options
18
16
  require 'cbor-transform-j'
19
17
  o = CBOR::Transform_jr.new.transform(o)
20
18
  end
21
- o = o.to_packed_cbor if /p/ === options
22
- o = o.to_unpacked_cbor if /q/ === options
23
- o = o.cbor_pre_canonicalize if /c/ === options
24
- o = o.cbor_prepare_deterministic if /d/ === options
19
+ o = cbor_diagnostic_item_processing(o, options)
25
20
  o = CBOR.encode(o)
26
21
  print o
27
22
  warn "JSON size: #{i.size} bytes, CBOR size: #{o.size} bytes." if /v/ === options
data/bin/json2json.rb CHANGED
@@ -5,16 +5,10 @@ require 'cbor-packed'
5
5
  require 'cbor-deterministic'
6
6
  require 'cbor-canonical'
7
7
 
8
- options = ''
9
- while /\A-([cdpq]+)\z/ === ARGV[0]
10
- options << $1
11
- ARGV.shift
12
- end
8
+ require 'cbor-diagnostic-helper'
9
+ options = cbor_diagnostic_process_args("cdpq")
13
10
 
14
11
  i = ARGF.read
15
12
  o = JSON.load(i)
16
- o = o.to_packed_cbor if /p/ === options
17
- o = o.to_unpacked_cbor if /q/ === options
18
- o = o.cbor_pre_canonicalize if /c/ === options
19
- o = o.cbor_prepare_deterministic if /d/ === options
13
+ o = cbor_diagnostic_item_processing(o, options)
20
14
  puts JSON.pretty_generate(o)
data/bin/json2neatjson.rb CHANGED
@@ -6,17 +6,10 @@ require 'cbor-packed'
6
6
  require 'cbor-deterministic'
7
7
  require 'cbor-canonical'
8
8
 
9
- options = ''
10
- while /\A-([cdpq]+)\z/ === ARGV[0]
11
- options << $1
12
- ARGV.shift
13
- end
9
+ require 'cbor-diagnostic-helper'
10
+ options = cbor_diagnostic_process_args("cdpq")
14
11
 
15
- $stdout.binmode
16
12
  i = ARGF.read
17
13
  o = JSON.load(i)
18
- o = o.to_packed_cbor if /p/ === options
19
- o = o.to_unpacked_cbor if /q/ === options
20
- o = o.cbor_pre_canonicalize if /c/ === options
21
- o = o.cbor_prepare_deterministic if /d/ === options
14
+ o = cbor_diagnostic_item_processing(o, options)
22
15
  puts JSON.neat_generate(o, after_comma: 1, after_colon: 1)
data/bin/json2yaml.rb CHANGED
@@ -13,16 +13,10 @@ class Array
13
13
  end
14
14
  end
15
15
 
16
- options = ''
17
- while /\A-([cdpq]+)\z/ === ARGV[0]
18
- options << $1
19
- ARGV.shift
20
- end
16
+ require 'cbor-diagnostic-helper'
17
+ options = cbor_diagnostic_process_args("cdpq")
21
18
 
22
19
  i = ARGF.read
23
20
  o = JSON.load(i)
24
- o = o.to_packed_cbor if /p/ === options
25
- o = o.to_unpacked_cbor if /q/ === options
26
- o = o.cbor_pre_canonicalize if /c/ === options
27
- o = o.cbor_prepare_deterministic if /d/ === options
21
+ o = cbor_diagnostic_item_processing(o, options)
28
22
  puts YAML.dump(o)
data/bin/pretty2diag.rb CHANGED
@@ -7,6 +7,11 @@ def extractbytes(s)
7
7
  s.each_line.map {|ln| ln.sub(/#.*/, '')}.join.scan(/[0-9a-fA-F][0-9a-fA-F]/).map {|b| b.to_i(16).chr(Encoding::BINARY)}.join
8
8
  end
9
9
 
10
+
11
+ require 'cbor-diagnostic-helper'
12
+ options = cbor_diagnostic_process_args("cdetpqu")
13
+
14
+
10
15
  i = extractbytes(ARGF)
11
16
  o = CBOR.decode(i)
12
- puts o.cbor_diagnostic
17
+ puts cbor_diagnostic_output(o, options)
data/bin/yaml2cbor.rb CHANGED
@@ -6,19 +6,13 @@ require 'cbor-packed'
6
6
  require 'cbor-deterministic'
7
7
  require 'cbor-canonical'
8
8
 
9
- options = ''
10
- while /\A-([cdpqv]+)\z/ === ARGV[0]
11
- options << $1
12
- ARGV.shift
13
- end
9
+ require 'cbor-diagnostic-helper'
10
+ options = cbor_diagnostic_process_args("cdpqv")
14
11
 
15
12
  $stdout.binmode
16
13
  i = ARGF.read
17
14
  o = YAML.load(i)
18
- o = o.to_packed_cbor if /p/ === options
19
- o = o.to_unpacked_cbor if /q/ === options
20
- o = o.cbor_pre_canonicalize if /c/ === options
21
- o = o.cbor_prepare_deterministic if /d/ === options
15
+ o = cbor_diagnostic_item_processing(o, options)
22
16
  o = CBOR.encode(o)
23
17
  print o
24
18
  warn "YAML size: #{i.size} bytes, CBOR size: #{o.size} bytes." if /v/ === options
data/bin/yaml2json.rb CHANGED
@@ -7,16 +7,10 @@ require 'cbor-packed'
7
7
  require 'cbor-deterministic'
8
8
  require 'cbor-canonical'
9
9
 
10
- options = ''
11
- while /\A-([cdpq]+)\z/ === ARGV[0]
12
- options << $1
13
- ARGV.shift
14
- end
10
+ require 'cbor-diagnostic-helper'
11
+ options = cbor_diagnostic_process_args("cdpq")
15
12
 
16
13
  i = ARGF.read
17
14
  o = YAML.load(i)
18
- o = o.to_packed_cbor if /p/ === options
19
- o = o.to_unpacked_cbor if /q/ === options
20
- o = o.cbor_pre_canonicalize if /c/ === options
21
- o = o.cbor_prepare_deterministic if /d/ === options
15
+ o = cbor_diagnostic_item_processing(o, options)
22
16
  puts JSON.pretty_generate(o)
data/cbor-diag.gemspec CHANGED
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = "cbor-diag"
3
- s.version = "0.6.3"
3
+ s.version = "0.7.0"
4
4
  s.summary = "CBOR (Concise Binary Object Representation) diagnostic notation"
5
5
  s.description = %q{cbor-diag implements diagnostic notation for CBOR, RFC 8949 and RFC 8742}
6
6
  s.author = "Carsten Bormann"
@@ -226,18 +226,24 @@ module CBOR_DIAG
226
226
  r11 = SyntaxNode.new(input, (index-1)...index) if r11 == true
227
227
  r0 = r11
228
228
  else
229
- r12 = _nt_embedded
229
+ r12 = _nt_appstring
230
230
  if r12
231
231
  r12 = SyntaxNode.new(input, (index-1)...index) if r12 == true
232
232
  r0 = r12
233
233
  else
234
- r13 = _nt_streamstring
234
+ r13 = _nt_embedded
235
235
  if r13
236
236
  r13 = SyntaxNode.new(input, (index-1)...index) if r13 == true
237
237
  r0 = r13
238
238
  else
239
- @index = i0
240
- r0 = nil
239
+ r14 = _nt_streamstring
240
+ if r14
241
+ r14 = SyntaxNode.new(input, (index-1)...index) if r14 == true
242
+ r0 = r14
243
+ else
244
+ @index = i0
245
+ r0 = nil
246
+ end
241
247
  end
242
248
  end
243
249
  end
@@ -1519,6 +1525,131 @@ module CBOR_DIAG
1519
1525
  r0
1520
1526
  end
1521
1527
 
1528
+ module Appstring0
1529
+ end
1530
+
1531
+ module Appstring1
1532
+ def a
1533
+ elements[0]
1534
+ end
1535
+
1536
+ def s
1537
+ elements[2]
1538
+ end
1539
+
1540
+ end
1541
+
1542
+ module Appstring2
1543
+ #'
1544
+ def to_rb
1545
+ data = s.elements.map(&:partval).join.b
1546
+ app = a.text_value
1547
+ # Find a better place to put a default initialization
1548
+ CBOR_DIAG::APPS ||= Hash.new { |h, k|
1549
+ h[k] = begin CBOR_DIAG.const_get("App_#{app}")
1550
+ rescue NameError
1551
+ raise ArgumentError.new("cbor-diagnostic: Unknown application-oriented extension #{k}")
1552
+ end
1553
+ }
1554
+ CBOR_DIAG::APPS[app].decode(app, data)
1555
+ end
1556
+ end
1557
+
1558
+ def _nt_appstring
1559
+ start_index = index
1560
+ if node_cache[:appstring].has_key?(index)
1561
+ cached = node_cache[:appstring][index]
1562
+ if cached
1563
+ node_cache[:appstring][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1564
+ @index = cached.interval.end
1565
+ end
1566
+ return cached
1567
+ end
1568
+
1569
+ i0, s0 = index, []
1570
+ i1, s1 = index, []
1571
+ if has_terminal?(@regexps[gr = '\A[a-z]'] ||= Regexp.new(gr), :regexp, index)
1572
+ r2 = true
1573
+ @index += 1
1574
+ else
1575
+ terminal_parse_failure('[a-z]')
1576
+ r2 = nil
1577
+ end
1578
+ s1 << r2
1579
+ if r2
1580
+ s3, i3 = [], index
1581
+ loop do
1582
+ if has_terminal?(@regexps[gr = '\A[a-z0-9]'] ||= Regexp.new(gr), :regexp, index)
1583
+ r4 = true
1584
+ @index += 1
1585
+ else
1586
+ terminal_parse_failure('[a-z0-9]')
1587
+ r4 = nil
1588
+ end
1589
+ if r4
1590
+ s3 << r4
1591
+ else
1592
+ break
1593
+ end
1594
+ end
1595
+ r3 = instantiate_node(SyntaxNode,input, i3...index, s3)
1596
+ s1 << r3
1597
+ end
1598
+ if s1.last
1599
+ r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
1600
+ r1.extend(Appstring0)
1601
+ else
1602
+ @index = i1
1603
+ r1 = nil
1604
+ end
1605
+ s0 << r1
1606
+ if r1
1607
+ if (match_len = has_terminal?("'", false, index))
1608
+ r5 = true
1609
+ @index += match_len
1610
+ else
1611
+ terminal_parse_failure('"\'"')
1612
+ r5 = nil
1613
+ end
1614
+ s0 << r5
1615
+ if r5
1616
+ s6, i6 = [], index
1617
+ loop do
1618
+ r7 = _nt_bstring_part
1619
+ if r7
1620
+ s6 << r7
1621
+ else
1622
+ break
1623
+ end
1624
+ end
1625
+ r6 = instantiate_node(SyntaxNode,input, i6...index, s6)
1626
+ s0 << r6
1627
+ if r6
1628
+ if (match_len = has_terminal?("'", false, index))
1629
+ r8 = true
1630
+ @index += match_len
1631
+ else
1632
+ terminal_parse_failure('"\'"')
1633
+ r8 = nil
1634
+ end
1635
+ s0 << r8
1636
+ end
1637
+ end
1638
+ end
1639
+ if s0.last
1640
+ r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
1641
+ r0.extend(Appstring1)
1642
+ r0.extend(Appstring2)
1643
+ else
1644
+ @index = i0
1645
+ r0 = nil
1646
+ end
1647
+
1648
+ node_cache[:appstring][start_index] = r0
1649
+
1650
+ r0
1651
+ end
1652
+
1522
1653
  module Bstring0
1523
1654
  def s
1524
1655
  elements[1]
@@ -0,0 +1,17 @@
1
+ require 'time'
2
+
3
+ # Using Time#iso8601 creates the following bugs:
4
+ # * dt'1970-01-01T10:00:00' is accepted and gives local time
5
+ # * dt'1970-01-01T10:00:00.0Z' gives an integer instead of a float
6
+ # Probably should copy over Time#xmlschema and fix that for us.
7
+
8
+ class CBOR_DIAG::App_dt
9
+ def self.decode(_, s)
10
+ t = Time.iso8601(s)
11
+ if t.subsec != 0
12
+ t.to_f
13
+ else
14
+ t.to_i
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,35 @@
1
+ require 'cbor-packed'
2
+ require 'cbor-deterministic'
3
+ require 'cbor-canonical'
4
+
5
+ def cbor_diagnostic_process_args(chars)
6
+ options = ''
7
+ while /\A-(?:([#{chars}]+)|a(.*))\z/ === ARGV[0]
8
+ ARGV.shift
9
+ if $1
10
+ options << $1
11
+ else
12
+ s = $2
13
+ s = ARGV.shift if s == ""
14
+ s.split(",").each do |a|
15
+ require "cbor-diagnostic-app/#{a}"
16
+ end
17
+ end
18
+ end
19
+ options
20
+ end
21
+
22
+ def cbor_diagnostic_item_processing(o, options)
23
+ o = o.to_packed_cbor if /p/ === options
24
+ o = o.to_unpacked_cbor if /q/ === options
25
+ o = o.cbor_pre_canonicalize if /c/ === options
26
+ o = o.cbor_prepare_deterministic if /d/ === options
27
+ o
28
+ end
29
+
30
+ def cbor_diagnostic_output(o, options)
31
+ o = cbor_diagnostic_item_processing(o, options)
32
+ o.cbor_diagnostic(try_decode_embedded: /e/ === options,
33
+ bytes_as_text: /t/ === options,
34
+ utf8: /u/ === options)
35
+ end
@@ -0,0 +1,3 @@
1
+ require 'treetop'
2
+ require 'cbor-diag-parser'
3
+
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cbor-diag
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.3
4
+ version: 0.7.0
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-10-20 00:00:00.000000000 Z
11
+ date: 2021-12-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -162,6 +162,9 @@ files:
162
162
  - bin/yaml2json.rb
163
163
  - cbor-diag.gemspec
164
164
  - lib/cbor-diag-parser.rb
165
+ - lib/cbor-diagnostic-app/dt.rb
166
+ - lib/cbor-diagnostic-helper.rb
167
+ - lib/cbor-diagnostic-parser.rb
165
168
  - lib/cbor-diagnostic.rb
166
169
  - lib/cbor-pretty.rb
167
170
  - lib/cbor-pure.rb