binstream 1.0.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 +7 -0
- data/.gitignore +52 -0
- data/.rspec +0 -0
- data/.ruby-version +1 -0
- data/Gemfile +5 -0
- data/Gemfile.lock +49 -0
- data/LICENSE +674 -0
- data/binstream.gemspec +28 -0
- data/lib/binstream.rb +11 -0
- data/lib/binstream/errors.rb +39 -0
- data/lib/binstream/streams/base.rb +333 -0
- data/lib/binstream/streams/file_reader.rb +49 -0
- data/lib/binstream/streams/string_reader.rb +14 -0
- data/lib/binstream/tracker.rb +63 -0
- data/lib/binstream/tracking.rb +31 -0
- data/lib/binstream/version.rb +3 -0
- metadata +115 -0
@@ -0,0 +1,14 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
module Binstream
|
3
|
+
module Streams
|
4
|
+
class StringReader < Base
|
5
|
+
def initialize(path_or_io, **kwargs)
|
6
|
+
if path_or_io.is_a?(::StringIO)
|
7
|
+
super(path_or_io, **kwargs)
|
8
|
+
else
|
9
|
+
super(::StringIO.new(path_or_io, "rb"), **kwargs)
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,63 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
module Binstream
|
3
|
+
class Tracker
|
4
|
+
include Singleton
|
5
|
+
|
6
|
+
def initialize
|
7
|
+
@tracking_buffer = []
|
8
|
+
@enabled = false
|
9
|
+
end
|
10
|
+
|
11
|
+
def buffer
|
12
|
+
@tracking_buffer
|
13
|
+
end
|
14
|
+
|
15
|
+
def enabled=(bool)
|
16
|
+
@enabled = !!bool
|
17
|
+
end
|
18
|
+
|
19
|
+
def enabled?
|
20
|
+
@enabled
|
21
|
+
end
|
22
|
+
|
23
|
+
def clear
|
24
|
+
@tracking_buffer.clear
|
25
|
+
end
|
26
|
+
|
27
|
+
def track(message = nil, &block)
|
28
|
+
|
29
|
+
value = if message.nil? && block_given?
|
30
|
+
yield
|
31
|
+
else
|
32
|
+
message
|
33
|
+
end
|
34
|
+
|
35
|
+
if enabled?
|
36
|
+
@tracking_buffer << value
|
37
|
+
end
|
38
|
+
|
39
|
+
return value
|
40
|
+
|
41
|
+
end
|
42
|
+
|
43
|
+
def print_debug_buffer(options={})
|
44
|
+
return unless enabled?
|
45
|
+
STDERR.puts ""
|
46
|
+
STDERR.puts "DEBUG BUFFER:"
|
47
|
+
debug_str = @tracking_buffer.map do |item|
|
48
|
+
if item.nil?
|
49
|
+
"\\x00"
|
50
|
+
elsif item == :newline
|
51
|
+
"\n\n"
|
52
|
+
elsif item == :break
|
53
|
+
"\n\t"
|
54
|
+
else
|
55
|
+
item.inspect
|
56
|
+
end
|
57
|
+
end.join(", ")
|
58
|
+
|
59
|
+
STDERR.puts debug_str
|
60
|
+
STDERR.puts ""
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
module Binstream
|
2
|
+
module Tracking
|
3
|
+
def self.included(base)
|
4
|
+
base.extend(ClassMethods)
|
5
|
+
end
|
6
|
+
|
7
|
+
def track(message = nil, &block)
|
8
|
+
::Binstream::Tracker.instance.track(message, &block)
|
9
|
+
end
|
10
|
+
|
11
|
+
def track_pos(stream)
|
12
|
+
track do
|
13
|
+
"Pos=#{stream.tell}"
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
def without_tracking(&block)
|
18
|
+
old_val = ::Binstream::Tracker.instance.enabled?
|
19
|
+
::Binstream::Tracker.instance.enabled = false
|
20
|
+
yield
|
21
|
+
ensure
|
22
|
+
::Binstream::Tracker.instance.enabled = old_val
|
23
|
+
end
|
24
|
+
|
25
|
+
module ClassMethods
|
26
|
+
def track(message = nil, &block)
|
27
|
+
::Binstream::Tracker.instance.track(message, &block)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
metadata
ADDED
@@ -0,0 +1,115 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: binstream
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Mitch Dempsey
|
8
|
+
autorequire:
|
9
|
+
bindir: exe
|
10
|
+
cert_chain: []
|
11
|
+
date: 2019-09-03 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: '2.0'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '2.0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '10.0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '10.0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rspec
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: simplecov
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
description: Binary stream processor
|
70
|
+
email:
|
71
|
+
- gems@mitchdempsey.com
|
72
|
+
executables: []
|
73
|
+
extensions: []
|
74
|
+
extra_rdoc_files: []
|
75
|
+
files:
|
76
|
+
- ".gitignore"
|
77
|
+
- ".rspec"
|
78
|
+
- ".ruby-version"
|
79
|
+
- Gemfile
|
80
|
+
- Gemfile.lock
|
81
|
+
- LICENSE
|
82
|
+
- binstream.gemspec
|
83
|
+
- lib/binstream.rb
|
84
|
+
- lib/binstream/errors.rb
|
85
|
+
- lib/binstream/streams/base.rb
|
86
|
+
- lib/binstream/streams/file_reader.rb
|
87
|
+
- lib/binstream/streams/string_reader.rb
|
88
|
+
- lib/binstream/tracker.rb
|
89
|
+
- lib/binstream/tracking.rb
|
90
|
+
- lib/binstream/version.rb
|
91
|
+
homepage: ''
|
92
|
+
licenses:
|
93
|
+
- GPL
|
94
|
+
metadata: {}
|
95
|
+
post_install_message:
|
96
|
+
rdoc_options: []
|
97
|
+
require_paths:
|
98
|
+
- lib
|
99
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ">="
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: 2.5.0
|
104
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
105
|
+
requirements:
|
106
|
+
- - ">="
|
107
|
+
- !ruby/object:Gem::Version
|
108
|
+
version: '0'
|
109
|
+
requirements: []
|
110
|
+
rubyforge_project:
|
111
|
+
rubygems_version: 2.7.3
|
112
|
+
signing_key:
|
113
|
+
specification_version: 4
|
114
|
+
summary: Binary stream processor
|
115
|
+
test_files: []
|