ruby-brs 1.0.1 → 1.1.4
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 +4 -4
- data/README.md +73 -71
- data/ext/brs_ext/buffer.c +17 -5
- data/ext/brs_ext/buffer.h +12 -0
- data/ext/brs_ext/common.h +3 -0
- data/ext/brs_ext/error.c +2 -3
- data/ext/brs_ext/error.h +1 -1
- data/ext/brs_ext/io.c +93 -77
- data/ext/brs_ext/main.c +0 -1
- data/ext/brs_ext/option.c +23 -19
- data/ext/brs_ext/option.h +9 -10
- data/ext/brs_ext/stream/compressor.c +22 -23
- data/ext/brs_ext/stream/compressor.h +3 -3
- data/ext/brs_ext/stream/decompressor.c +18 -20
- data/ext/brs_ext/stream/decompressor.h +3 -3
- data/ext/brs_ext/string.c +30 -45
- data/ext/extconf.rb +45 -30
- data/lib/brs.rb +1 -0
- data/lib/brs/file.rb +6 -0
- data/lib/brs/option.rb +14 -7
- data/lib/brs/stream/abstract.rb +9 -12
- data/lib/brs/stream/raw/abstract.rb +6 -2
- data/lib/brs/stream/raw/compressor.rb +10 -8
- data/lib/brs/stream/raw/decompressor.rb +1 -5
- data/lib/brs/stream/reader.rb +71 -52
- data/lib/brs/stream/reader_helpers.rb +2 -0
- data/lib/brs/stream/writer.rb +10 -5
- data/lib/brs/stream/writer_helpers.rb +8 -10
- data/lib/brs/string.rb +2 -0
- data/lib/brs/validation.rb +15 -2
- data/lib/brs/version.rb +1 -1
- metadata +63 -21
data/lib/brs/stream/writer.rb
CHANGED
@@ -64,7 +64,7 @@ module BRS
|
|
64
64
|
end
|
65
65
|
|
66
66
|
protected def write_remaining_buffer
|
67
|
-
return nil if @buffer.bytesize
|
67
|
+
return nil if @buffer.bytesize.zero?
|
68
68
|
|
69
69
|
@io.write @buffer
|
70
70
|
|
@@ -77,6 +77,11 @@ module BRS
|
|
77
77
|
|
78
78
|
# -- asynchronous --
|
79
79
|
|
80
|
+
# IO write nonblock can raise wait writable error.
|
81
|
+
# After resolving this error user may provide same content again.
|
82
|
+
# It is not possible to revert accepted content after error.
|
83
|
+
# So we have to accept content after processing IO write nonblock.
|
84
|
+
# It means that first write nonblock won't call IO write nonblock.
|
80
85
|
def write_nonblock(object, *options)
|
81
86
|
return 0 unless write_remaining_buffer_nonblock(*options)
|
82
87
|
|
@@ -120,14 +125,14 @@ module BRS
|
|
120
125
|
end
|
121
126
|
|
122
127
|
protected def write_remaining_buffer_nonblock(*options)
|
123
|
-
return true if @buffer.bytesize
|
128
|
+
return true if @buffer.bytesize.zero?
|
124
129
|
|
125
130
|
bytes_written = @io.write_nonblock @buffer, *options
|
126
|
-
return false if bytes_written
|
131
|
+
return false if bytes_written.zero?
|
127
132
|
|
128
133
|
@buffer = @buffer.byteslice bytes_written, @buffer.bytesize - bytes_written
|
129
134
|
|
130
|
-
@buffer.bytesize
|
135
|
+
@buffer.bytesize.zero?
|
131
136
|
end
|
132
137
|
|
133
138
|
protected def raw_nonblock_wrapper(method_name, *args)
|
@@ -137,7 +142,7 @@ module BRS
|
|
137
142
|
# -- common --
|
138
143
|
|
139
144
|
protected def transcode(data)
|
140
|
-
data = data.encode @external_encoding,
|
145
|
+
data = data.encode @external_encoding, **@transcode_options unless @external_encoding.nil?
|
141
146
|
data
|
142
147
|
end
|
143
148
|
end
|
@@ -1,6 +1,8 @@
|
|
1
1
|
# Ruby bindings for brotli library.
|
2
2
|
# Copyright (c) 2019 AUTHORS, MIT License.
|
3
3
|
|
4
|
+
require "English"
|
5
|
+
|
4
6
|
require_relative "../error"
|
5
7
|
require_relative "../validation"
|
6
8
|
|
@@ -11,18 +13,13 @@ module BRS
|
|
11
13
|
write object
|
12
14
|
end
|
13
15
|
|
14
|
-
def print(*objects)
|
15
|
-
if objects.empty?
|
16
|
-
write $LAST_READ_LINE unless $LAST_READ_LINE.nil?
|
17
|
-
return nil
|
18
|
-
end
|
19
|
-
|
16
|
+
def print(*objects, field_separator: $OUTPUT_FIELD_SEPARATOR, record_separator: $OUTPUT_RECORD_SEPARATOR)
|
20
17
|
objects.each do |object|
|
21
18
|
write object
|
22
|
-
write
|
19
|
+
write field_separator unless field_separator.nil?
|
23
20
|
end
|
24
21
|
|
25
|
-
write
|
22
|
+
write record_separator unless record_separator.nil?
|
26
23
|
|
27
24
|
nil
|
28
25
|
end
|
@@ -34,9 +31,10 @@ module BRS
|
|
34
31
|
end
|
35
32
|
|
36
33
|
def putc(object, encoding: ::Encoding::BINARY)
|
37
|
-
|
34
|
+
case object
|
35
|
+
when ::Numeric
|
38
36
|
write object.chr(encoding)
|
39
|
-
|
37
|
+
when ::String
|
40
38
|
write object[0]
|
41
39
|
else
|
42
40
|
raise ValidateError, "invalid object: \"#{object}\" for putc"
|
data/lib/brs/string.rb
CHANGED
data/lib/brs/validation.rb
CHANGED
@@ -5,12 +5,25 @@ require_relative "error"
|
|
5
5
|
|
6
6
|
module BRS
|
7
7
|
module Validation
|
8
|
+
IO_METHODS = %i[
|
9
|
+
read
|
10
|
+
write
|
11
|
+
readpartial
|
12
|
+
read_nonblock
|
13
|
+
write_nonblock
|
14
|
+
eof?
|
15
|
+
flush
|
16
|
+
close
|
17
|
+
closed?
|
18
|
+
]
|
19
|
+
.freeze
|
20
|
+
|
8
21
|
def self.validate_bool(value)
|
9
22
|
raise ValidateError, "invalid bool" unless value.is_a?(::TrueClass) || value.is_a?(::FalseClass)
|
10
23
|
end
|
11
24
|
|
12
25
|
def self.validate_positive_integer(value)
|
13
|
-
raise ValidateError, "invalid positive integer" unless value.is_a?(::Integer) && value
|
26
|
+
raise ValidateError, "invalid positive integer" unless value.is_a?(::Integer) && value.positive?
|
14
27
|
end
|
15
28
|
|
16
29
|
def self.validate_not_negative_integer(value)
|
@@ -26,7 +39,7 @@ module BRS
|
|
26
39
|
end
|
27
40
|
|
28
41
|
def self.validate_io(value)
|
29
|
-
raise ValidateError, "invalid io" unless value.
|
42
|
+
raise ValidateError, "invalid io" unless IO_METHODS.all? { |method| value.respond_to? method }
|
30
43
|
end
|
31
44
|
|
32
45
|
def self.validate_hash(value)
|
data/lib/brs/version.rb
CHANGED
metadata
CHANGED
@@ -1,99 +1,141 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby-brs
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.1.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andrew Aladjev
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-10-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: codecov
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
13
27
|
- !ruby/object:Gem::Dependency
|
14
28
|
name: minitar
|
15
29
|
requirement: !ruby/object:Gem::Requirement
|
16
30
|
requirements:
|
17
31
|
- - "~>"
|
18
32
|
- !ruby/object:Gem::Version
|
19
|
-
version: '0.
|
33
|
+
version: '0.9'
|
20
34
|
type: :development
|
21
35
|
prerelease: false
|
22
36
|
version_requirements: !ruby/object:Gem::Requirement
|
23
37
|
requirements:
|
24
38
|
- - "~>"
|
25
39
|
- !ruby/object:Gem::Version
|
26
|
-
version: '0.
|
40
|
+
version: '0.9'
|
27
41
|
- !ruby/object:Gem::Dependency
|
28
42
|
name: minitest
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|
30
44
|
requirements:
|
31
45
|
- - "~>"
|
32
46
|
- !ruby/object:Gem::Version
|
33
|
-
version: '5.
|
47
|
+
version: '5.12'
|
34
48
|
type: :development
|
35
49
|
prerelease: false
|
36
50
|
version_requirements: !ruby/object:Gem::Requirement
|
37
51
|
requirements:
|
38
52
|
- - "~>"
|
39
53
|
- !ruby/object:Gem::Version
|
40
|
-
version: '5.
|
54
|
+
version: '5.12'
|
41
55
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
56
|
+
name: ocg
|
43
57
|
requirement: !ruby/object:Gem::Requirement
|
44
58
|
requirements:
|
45
59
|
- - "~>"
|
46
60
|
- !ruby/object:Gem::Version
|
47
|
-
version: '1.
|
61
|
+
version: '1.1'
|
48
62
|
type: :development
|
49
63
|
prerelease: false
|
50
64
|
version_requirements: !ruby/object:Gem::Requirement
|
51
65
|
requirements:
|
52
66
|
- - "~>"
|
53
67
|
- !ruby/object:Gem::Version
|
54
|
-
version: '1.
|
68
|
+
version: '1.1'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rake
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: rake-compiler
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
55
97
|
- !ruby/object:Gem::Dependency
|
56
98
|
name: rubocop
|
57
99
|
requirement: !ruby/object:Gem::Requirement
|
58
100
|
requirements:
|
59
101
|
- - "~>"
|
60
102
|
- !ruby/object:Gem::Version
|
61
|
-
version: '0.
|
103
|
+
version: '0.75'
|
62
104
|
type: :development
|
63
105
|
prerelease: false
|
64
106
|
version_requirements: !ruby/object:Gem::Requirement
|
65
107
|
requirements:
|
66
108
|
- - "~>"
|
67
109
|
- !ruby/object:Gem::Version
|
68
|
-
version: '0.
|
110
|
+
version: '0.75'
|
69
111
|
- !ruby/object:Gem::Dependency
|
70
112
|
name: rubocop-performance
|
71
113
|
requirement: !ruby/object:Gem::Requirement
|
72
114
|
requirements:
|
73
115
|
- - "~>"
|
74
116
|
- !ruby/object:Gem::Version
|
75
|
-
version: '1.
|
117
|
+
version: '1.5'
|
76
118
|
type: :development
|
77
119
|
prerelease: false
|
78
120
|
version_requirements: !ruby/object:Gem::Requirement
|
79
121
|
requirements:
|
80
122
|
- - "~>"
|
81
123
|
- !ruby/object:Gem::Version
|
82
|
-
version: '1.
|
124
|
+
version: '1.5'
|
83
125
|
- !ruby/object:Gem::Dependency
|
84
|
-
name:
|
126
|
+
name: simplecov
|
85
127
|
requirement: !ruby/object:Gem::Requirement
|
86
128
|
requirements:
|
87
|
-
- - "
|
129
|
+
- - ">="
|
88
130
|
- !ruby/object:Gem::Version
|
89
|
-
version: '
|
131
|
+
version: '0'
|
90
132
|
type: :development
|
91
133
|
prerelease: false
|
92
134
|
version_requirements: !ruby/object:Gem::Requirement
|
93
135
|
requirements:
|
94
|
-
- - "
|
136
|
+
- - ">="
|
95
137
|
- !ruby/object:Gem::Version
|
96
|
-
version: '
|
138
|
+
version: '0'
|
97
139
|
description:
|
98
140
|
email: aladjev.andrew@gmail.com
|
99
141
|
executables: []
|
@@ -149,16 +191,16 @@ require_paths:
|
|
149
191
|
- lib
|
150
192
|
required_ruby_version: !ruby/object:Gem::Requirement
|
151
193
|
requirements:
|
152
|
-
- - "
|
194
|
+
- - "~>"
|
153
195
|
- !ruby/object:Gem::Version
|
154
|
-
version: '
|
196
|
+
version: '2.7'
|
155
197
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
156
198
|
requirements:
|
157
199
|
- - ">="
|
158
200
|
- !ruby/object:Gem::Version
|
159
201
|
version: '0'
|
160
202
|
requirements: []
|
161
|
-
rubygems_version: 3.
|
203
|
+
rubygems_version: 3.1.2
|
162
204
|
signing_key:
|
163
205
|
specification_version: 4
|
164
206
|
summary: Ruby bindings for brotli library.
|