edn-abnf 0.0.1 → 0.0.3

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: 8e126887990e8896adb3bd44950656b51afc8d8f1302621c017ecbbc914361eb
4
- data.tar.gz: 9766b5bc4ec7a00e40cea828776d737b2723b6f3ae9448d1fb3dcc10a45f336a
3
+ metadata.gz: 17ca8476ccb59a567d0c72fa1eb3be96a637901add2544a545a5e87f8781bd8f
4
+ data.tar.gz: c88bba22e17635f44acbe1705cd8cb6a9c37ca4c91806e729341cfd347aa8eed
5
5
  SHA512:
6
- metadata.gz: 1b6886f7d40dec4c34f5cb39c9900c5123605b97b68fb620f0d4ff40eefc1bdb27f26b1132464afdcd2e94be46a1be7d8d9e708f25b34a4047899bfb875e4ce9
7
- data.tar.gz: 051ca2fbe7cb43b569d0c376b4fc7a8b1d29f4a33fb0b6b8c73da78029e73042356203b6bdc3dbb4ce4fb98fd1c0e5bcfc19eb218c72fa9b190ec7dc86b0517c
6
+ metadata.gz: baac80d34ad740d44e18907bda40ee83f50ab858441d61a70b44ec9f9786fa90c2d24cb988327c44f9ad19762d89af2dffb5b77b2817b1f1c23688a9390bda01
7
+ data.tar.gz: a6a086be5922adf1ce51f51f5dc009719ed985729efb2c94c4d27bed097054f5490c2d04ca33e32e6a9239bd5c987a31860dc24aa05e46dcdedf7c2293c37f04
data/bin/edn-abnf CHANGED
@@ -39,8 +39,13 @@ end
39
39
 
40
40
  edn_file = ARGF.read
41
41
 
42
- edn = EDN.from_edn(edn_file)
43
- result = edn.tree # XXX .tree?
42
+ begin
43
+ edn = EDN.from_edn(edn_file)
44
+ result = edn.tree # XXX .tree?
45
+ rescue ArgumentError => e
46
+ puts "** #{e}"
47
+ exit 1
48
+ end
44
49
 
45
50
  case $options.target
46
51
  when :basic, nil
data/bin/edn-abnf~ ADDED
@@ -0,0 +1,57 @@
1
+ #!/usr/bin/env ruby
2
+ require 'pp'
3
+ require 'yaml'
4
+ require 'treetop'
5
+ require 'json'
6
+
7
+ require_relative '../lib/edn-abnf.rb'
8
+
9
+ def snaky(name)
10
+ name.gsub(/-/, "_")
11
+ end
12
+
13
+ Encoding.default_external = Encoding::UTF_8
14
+ require 'optparse'
15
+ require 'ostruct'
16
+
17
+ $options = OpenStruct.new
18
+ begin
19
+ op = OptionParser.new do |opts|
20
+ opts.banner = "Usage: edn-abnf.rb [options] [file.edn... | -]"
21
+
22
+ opts.on("-v", "--[no-]verbose", "Run verbosely") do |v|
23
+ $options.verbose = v
24
+ end
25
+ opts.on("-tFMT", "--to=FMT", [:basic, :neat, :json, :yaml, :edn, :diag], "Target format") do |v|
26
+ $options.target = v
27
+ end
28
+ end
29
+ op.parse!
30
+ rescue Exception => e
31
+ warn e
32
+ exit 1
33
+ end
34
+
35
+ if ARGV == []
36
+ puts op
37
+ exit 1
38
+ end
39
+
40
+ edn_file = ARGF.read
41
+
42
+ edn = EDN.from_edn(edn_file)
43
+ result = edn.tree # XXX .tree?
44
+
45
+ case $options.target
46
+ when :basic, nil
47
+ pp result
48
+ when :neat, :json
49
+ require 'neatjson'
50
+ puts JSON.neat_generate(result, after_comma: 1, after_colon: 1)
51
+ when :yaml
52
+ puts result.to_yaml
53
+ when :edn, :diag
54
+ puts result.cbor_diagnostic
55
+ else
56
+ warn ["Unknown target format: ", $options.target].inspect
57
+ end
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.0.1"
3
+ s.version = "0.0.3"
4
4
  s.summary = "CDDL (Concise Data Definition Language) converters and miscellaneous tools"
5
5
  s.description = %q{edn-abnf implements converters and miscellaneous tools for CBOR EDN's ABNF}
6
6
  s.author = "Carsten Bormann"
@@ -14,6 +14,7 @@ Gem::Specification.new do |s|
14
14
  s.require_paths = ["lib"]
15
15
 
16
16
  s.add_development_dependency 'bundler', '~>1'
17
+ s.add_development_dependency 'abnftt', '~>0.2'
17
18
  s.add_dependency 'treetop', '~>1'
18
19
  s.add_dependency 'json', '~>2'
19
20
  s.add_dependency 'neatjson', '~>0.10'
@@ -0,0 +1,16 @@
1
+ # mockup only; needs parser!
2
+
3
+ class CBOR_DIAG::App_b64
4
+ def self.decode(_, s)
5
+ t = s.gsub(/\s/, '').chars.each_slice(4).map(&:join)
6
+ if last = t[-1]
7
+ last << "=" * (4 - last.size)
8
+ end
9
+ b = t.join.tr("-_", "+/")
10
+ begin
11
+ b.unpack("m0")[0]
12
+ rescue ArgumentError
13
+ raise ArgumentError, "cbor-diagnostic: invalid base64 #{b.inspect}", caller[1..-1]
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,7 @@
1
+ # mockup only; needs parser!
2
+
3
+ class CBOR_DIAG::App_h
4
+ def self.decode(_, s)
5
+ s.gsub(/#.*|\s|\/[^\/]*\//, "").chars.each_slice(2).map{ |x| Integer(x.join, 16).chr("BINARY") }.join
6
+ end
7
+ end
@@ -2,6 +2,8 @@ require 'cbor-diagnostic'
2
2
  module CBOR_DIAG
3
3
  end
4
4
  require 'cbor-diagnostic-app/dt'
5
+ require 'cbor-diagnostic-app/h'
6
+ require 'cbor-diagnostic-app/b64'
5
7
 
6
8
  require 'treetop'
7
9
  require_relative './edngrammar'
@@ -1077,7 +1077,7 @@ module EDNGRAMMAR
1077
1077
  EDNGRAMMAR.const_set(:APPS, Hash.new { |h, k|
1078
1078
  h[k] = begin ::CBOR_DIAG.const_get("App_#{app}")
1079
1079
  rescue NameError
1080
- raise ArgumentError.new("cbor-diagnostic: Unknown application-oriented extension #{k}")
1080
+ raise ArgumentError, "cbor-diagnostic: Unknown application-oriented extension '#{k}'", caller
1081
1081
  end
1082
1082
  }) unless ::EDNGRAMMAR.const_defined?(:APPS)
1083
1083
  ::EDNGRAMMAR::APPS[app].decode(app, data)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: edn-abnf
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Carsten Bormann
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-08-24 00:00:00.000000000 Z
11
+ date: 2023-08-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -24,6 +24,20 @@ dependencies:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '1'
27
+ - !ruby/object:Gem::Dependency
28
+ name: abnftt
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '0.2'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '0.2'
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: treetop
29
43
  requirement: !ruby/object:Gem::Requirement
@@ -71,11 +85,15 @@ description: edn-abnf implements converters and miscellaneous tools for CBOR EDN
71
85
  email: cabo@tzi.org
72
86
  executables:
73
87
  - edn-abnf
88
+ - edn-abnf~
74
89
  extensions: []
75
90
  extra_rdoc_files: []
76
91
  files:
77
92
  - bin/edn-abnf
93
+ - bin/edn-abnf~
78
94
  - edn-abnf.gemspec
95
+ - lib/cbor-diagnostic-app/b64.rb
96
+ - lib/cbor-diagnostic-app/h.rb
79
97
  - lib/edn-abnf.rb
80
98
  - lib/parser/edn-util.rb
81
99
  - lib/parser/edngrammar.rb