cbor-diag-ref 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 75d3124aa676405410e8cfa01e0ad5b546f59972badf278ef23639a864da80b8
4
+ data.tar.gz: 0045d24c6491fa71909ec9e073a245cf4e336c74fd3cf9d18dde42184169e091
5
+ SHA512:
6
+ metadata.gz: 5c84a79da725de4270b760c3197937bedc435a82cbba078c4b90a2f93314b3b0f033c3663778867aecf4716672975ff382220b98b2981fa807d333cf47eb2f90
7
+ data.tar.gz: f25e5ec1dfa2a6280be6487f75ac52666f0914037148373ec6e48c44d49aafbc1aac55796a2f5d1cdfa1dc23c0cc3a1bdc0715fa0219a0823a21a4d6c6056fd6
@@ -0,0 +1,17 @@
1
+ Gem::Specification.new do |s|
2
+ s.name = "cbor-diag-ref"
3
+ s.version = "0.0.1"
4
+ s.summary = "CBOR (Concise Binary Object Representation) diagnostic notation"
5
+ s.description = %q{cbor-diag-ref implements referencing for CBOR diagnostic notation}
6
+ s.author = "Carsten Bormann"
7
+ s.email = "cabo@tzi.org"
8
+ s.license = "MIT"
9
+ s.homepage = "http://cbor.io/"
10
+ s.files = Dir['lib/**/*.rb'] + %w(cbor-diag-ref.gemspec) + Dir['bin/**/*.rb']
11
+ s.executables = Dir['bin/**/*.rb'].map {|x| File.basename(x)}
12
+ s.required_ruby_version = '>= 2.3'
13
+
14
+ s.require_paths = ["lib"]
15
+
16
+ s.add_development_dependency 'bundler', '~>1'
17
+ end
@@ -0,0 +1,38 @@
1
+ require 'treetop'
2
+ require 'cbor-diag-parser'
3
+ require 'uri'
4
+ require 'open-uri'
5
+
6
+ class CBOR_DIAG::App_ref
7
+ def self.trunc_for_error(s, n = 40)
8
+ if s.size > n
9
+ s[0...n].inspect << "..."
10
+ else
11
+ s.inspect
12
+ end
13
+ end
14
+
15
+ def self.decode(_, s)
16
+
17
+ # XXX this fetches a unchecked URL/file based on input -- needs some sanitizing...
18
+
19
+ diag = begin
20
+ URI(s).open.read
21
+ rescue NoMethodError
22
+ false # avoid showing URI.open in the backtrace
23
+ end
24
+ diag ||= File.read(s)
25
+ parser = CBOR_DIAGParser.new
26
+ if result = parser.parse(diag)
27
+ decoded = result.to_rb
28
+ if CBOR::Sequence === decoded
29
+ raise ArgumentError,
30
+ "*** can't handle CBOR sequence #{trunc_for_error(diag)} as referenced from #{s.inspect}"
31
+ end
32
+ decoded
33
+ else
34
+ raise ArgumentError,
35
+ "*** can't parse #{trunc_for_error(diag)} as referenced from #{s.inspect}: #{parser.failure_reason}"
36
+ end
37
+ end
38
+ end
metadata ADDED
@@ -0,0 +1,58 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: cbor-diag-ref
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Carsten Bormann
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2024-02-25 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1'
27
+ description: cbor-diag-ref implements referencing for CBOR diagnostic notation
28
+ email: cabo@tzi.org
29
+ executables: []
30
+ extensions: []
31
+ extra_rdoc_files: []
32
+ files:
33
+ - cbor-diag-ref.gemspec
34
+ - lib/cbor-diagnostic-app/ref.rb
35
+ homepage: http://cbor.io/
36
+ licenses:
37
+ - MIT
38
+ metadata: {}
39
+ post_install_message:
40
+ rdoc_options: []
41
+ require_paths:
42
+ - lib
43
+ required_ruby_version: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '2.3'
48
+ required_rubygems_version: !ruby/object:Gem::Requirement
49
+ requirements:
50
+ - - ">="
51
+ - !ruby/object:Gem::Version
52
+ version: '0'
53
+ requirements: []
54
+ rubygems_version: 3.4.10
55
+ signing_key:
56
+ specification_version: 4
57
+ summary: CBOR (Concise Binary Object Representation) diagnostic notation
58
+ test_files: []