ruby-lzws 1.2.0 → 1.4.1
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 +63 -29
- data/ext/extconf.rb +90 -20
- data/ext/lzws_ext/buffer.c +3 -5
- data/ext/lzws_ext/buffer.h +5 -5
- data/ext/lzws_ext/error.c +11 -13
- data/ext/lzws_ext/gvl.h +24 -0
- data/ext/lzws_ext/io.c +81 -13
- data/ext/lzws_ext/main.c +5 -1
- data/ext/lzws_ext/option.c +36 -19
- data/ext/lzws_ext/option.h +22 -20
- data/ext/lzws_ext/stream/compressor.c +77 -27
- data/ext/lzws_ext/stream/compressor.h +2 -0
- data/ext/lzws_ext/stream/decompressor.c +50 -20
- data/ext/lzws_ext/stream/decompressor.h +2 -0
- data/ext/lzws_ext/string.c +113 -33
- data/lib/lzws/file.rb +2 -2
- data/lib/lzws/option.rb +34 -4
- data/lib/lzws/stream/abstract.rb +5 -3
- data/lib/lzws/stream/reader.rb +3 -2
- data/lib/lzws/stream/reader_helpers.rb +1 -1
- data/lib/lzws/validation.rb +3 -1
- data/lib/lzws/version.rb +1 -1
- metadata +75 -17
data/ext/lzws_ext/string.c
CHANGED
@@ -12,9 +12,9 @@
|
|
12
12
|
|
13
13
|
#include "lzws_ext/buffer.h"
|
14
14
|
#include "lzws_ext/error.h"
|
15
|
+
#include "lzws_ext/gvl.h"
|
15
16
|
#include "lzws_ext/macro.h"
|
16
17
|
#include "lzws_ext/option.h"
|
17
|
-
#include "ruby.h"
|
18
18
|
|
19
19
|
// -- buffer --
|
20
20
|
|
@@ -41,30 +41,67 @@ static inline lzws_ext_result_t increase_destination_buffer(
|
|
41
41
|
return 0;
|
42
42
|
}
|
43
43
|
|
44
|
-
// --
|
44
|
+
// -- compress --
|
45
45
|
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
size_t
|
46
|
+
typedef struct
|
47
|
+
{
|
48
|
+
lzws_compressor_state_t* state_ptr;
|
49
|
+
lzws_ext_byte_t** remaining_source_ptr;
|
50
|
+
size_t* remaining_source_length_ptr;
|
51
|
+
lzws_ext_byte_t* remaining_destination_buffer;
|
52
|
+
size_t* remaining_destination_buffer_length_ptr;
|
53
|
+
lzws_result_t result;
|
54
|
+
} compress_args_t;
|
55
|
+
|
56
|
+
typedef struct
|
57
|
+
{
|
58
|
+
lzws_compressor_state_t* state_ptr;
|
59
|
+
lzws_ext_byte_t* remaining_destination_buffer;
|
60
|
+
size_t* remaining_destination_buffer_length_ptr;
|
61
|
+
lzws_result_t result;
|
62
|
+
} compressor_finish_args_t;
|
51
63
|
|
52
|
-
|
64
|
+
static inline void* compress_wrapper(void* data)
|
65
|
+
{
|
66
|
+
compress_args_t* args = data;
|
67
|
+
|
68
|
+
args->result = lzws_compress(
|
69
|
+
args->state_ptr,
|
70
|
+
args->remaining_source_ptr,
|
71
|
+
args->remaining_source_length_ptr,
|
72
|
+
&args->remaining_destination_buffer,
|
73
|
+
args->remaining_destination_buffer_length_ptr);
|
74
|
+
|
75
|
+
return NULL;
|
76
|
+
}
|
77
|
+
|
78
|
+
static inline void* compressor_finish_wrapper(void* data)
|
79
|
+
{
|
80
|
+
compressor_finish_args_t* args = data;
|
81
|
+
|
82
|
+
args->result = lzws_compressor_finish(
|
83
|
+
args->state_ptr, &args->remaining_destination_buffer, args->remaining_destination_buffer_length_ptr);
|
84
|
+
|
85
|
+
return NULL;
|
86
|
+
}
|
53
87
|
|
54
|
-
#define BUFFERED_COMPRESS(
|
88
|
+
#define BUFFERED_COMPRESS(gvl, wrapper, args) \
|
55
89
|
while (true) { \
|
56
90
|
lzws_ext_byte_t* remaining_destination_buffer = \
|
57
91
|
(lzws_ext_byte_t*) RSTRING_PTR(destination_value) + destination_length; \
|
58
92
|
size_t prev_remaining_destination_buffer_length = remaining_destination_buffer_length; \
|
59
93
|
\
|
60
|
-
|
61
|
-
|
94
|
+
args.remaining_destination_buffer = remaining_destination_buffer; \
|
95
|
+
args.remaining_destination_buffer_length_ptr = &remaining_destination_buffer_length; \
|
96
|
+
\
|
97
|
+
LZWS_EXT_GVL_WRAP(gvl, wrapper, &args); \
|
98
|
+
if (args.result != 0 && args.result != LZWS_COMPRESSOR_NEEDS_MORE_DESTINATION) { \
|
62
99
|
return LZWS_EXT_ERROR_UNEXPECTED; \
|
63
100
|
} \
|
64
101
|
\
|
65
102
|
destination_length += prev_remaining_destination_buffer_length - remaining_destination_buffer_length; \
|
66
103
|
\
|
67
|
-
if (result == LZWS_COMPRESSOR_NEEDS_MORE_DESTINATION) {
|
104
|
+
if (args.result == LZWS_COMPRESSOR_NEEDS_MORE_DESTINATION) { \
|
68
105
|
ext_result = increase_destination_buffer( \
|
69
106
|
destination_value, destination_length, &remaining_destination_buffer_length, destination_buffer_length); \
|
70
107
|
\
|
@@ -83,17 +120,24 @@ static inline lzws_ext_result_t compress(
|
|
83
120
|
const char* source,
|
84
121
|
size_t source_length,
|
85
122
|
VALUE destination_value,
|
86
|
-
size_t destination_buffer_length
|
123
|
+
size_t destination_buffer_length,
|
124
|
+
bool gvl)
|
87
125
|
{
|
88
|
-
lzws_result_t result;
|
89
126
|
lzws_ext_result_t ext_result;
|
90
127
|
lzws_ext_byte_t* remaining_source = (lzws_ext_byte_t*) source;
|
91
128
|
size_t remaining_source_length = source_length;
|
92
129
|
size_t destination_length = 0;
|
93
130
|
size_t remaining_destination_buffer_length = destination_buffer_length;
|
94
131
|
|
95
|
-
|
96
|
-
|
132
|
+
compress_args_t args = {
|
133
|
+
.state_ptr = state_ptr,
|
134
|
+
.remaining_source_ptr = &remaining_source,
|
135
|
+
.remaining_source_length_ptr = &remaining_source_length};
|
136
|
+
|
137
|
+
BUFFERED_COMPRESS(gvl, compress_wrapper, args);
|
138
|
+
|
139
|
+
compressor_finish_args_t finish_args = {.state_ptr = state_ptr};
|
140
|
+
BUFFERED_COMPRESS(gvl, compressor_finish_wrapper, finish_args);
|
97
141
|
|
98
142
|
int exception;
|
99
143
|
|
@@ -107,10 +151,11 @@ static inline lzws_ext_result_t compress(
|
|
107
151
|
|
108
152
|
VALUE lzws_ext_compress_string(VALUE LZWS_EXT_UNUSED(self), VALUE source_value, VALUE options)
|
109
153
|
{
|
110
|
-
|
154
|
+
Check_Type(source_value, T_STRING);
|
111
155
|
Check_Type(options, T_HASH);
|
156
|
+
LZWS_EXT_GET_SIZE_OPTION(options, destination_buffer_length);
|
157
|
+
LZWS_EXT_GET_BOOL_OPTION(options, gvl);
|
112
158
|
LZWS_EXT_GET_COMPRESSOR_OPTIONS(options);
|
113
|
-
LZWS_EXT_GET_BUFFER_LENGTH_OPTION(options, destination_buffer_length);
|
114
159
|
|
115
160
|
lzws_compressor_state_t* state_ptr;
|
116
161
|
|
@@ -138,8 +183,11 @@ VALUE lzws_ext_compress_string(VALUE LZWS_EXT_UNUSED(self), VALUE source_value,
|
|
138
183
|
lzws_ext_raise_error(LZWS_EXT_ERROR_ALLOCATE_FAILED);
|
139
184
|
}
|
140
185
|
|
186
|
+
const char* source = RSTRING_PTR(source_value);
|
187
|
+
size_t source_length = RSTRING_LEN(source_value);
|
188
|
+
|
141
189
|
lzws_ext_result_t ext_result =
|
142
|
-
compress(state_ptr, source, source_length, destination_value, destination_buffer_length);
|
190
|
+
compress(state_ptr, source, source_length, destination_value, destination_buffer_length, gvl);
|
143
191
|
|
144
192
|
lzws_compressor_free_state(state_ptr);
|
145
193
|
|
@@ -152,34 +200,60 @@ VALUE lzws_ext_compress_string(VALUE LZWS_EXT_UNUSED(self), VALUE source_value,
|
|
152
200
|
|
153
201
|
// -- decompress --
|
154
202
|
|
203
|
+
typedef struct
|
204
|
+
{
|
205
|
+
lzws_decompressor_state_t* state_ptr;
|
206
|
+
lzws_ext_byte_t** remaining_source_ptr;
|
207
|
+
size_t* remaining_source_length_ptr;
|
208
|
+
lzws_ext_byte_t* remaining_destination_buffer;
|
209
|
+
size_t* remaining_destination_buffer_length_ptr;
|
210
|
+
lzws_result_t result;
|
211
|
+
} decompress_args_t;
|
212
|
+
|
213
|
+
static inline void* decompress_wrapper(void* data)
|
214
|
+
{
|
215
|
+
decompress_args_t* args = data;
|
216
|
+
|
217
|
+
args->result = lzws_decompress(
|
218
|
+
args->state_ptr,
|
219
|
+
args->remaining_source_ptr,
|
220
|
+
args->remaining_source_length_ptr,
|
221
|
+
&args->remaining_destination_buffer,
|
222
|
+
args->remaining_destination_buffer_length_ptr);
|
223
|
+
|
224
|
+
return NULL;
|
225
|
+
}
|
226
|
+
|
155
227
|
static inline lzws_ext_result_t decompress(
|
156
228
|
lzws_decompressor_state_t* state_ptr,
|
157
229
|
const char* source,
|
158
230
|
size_t source_length,
|
159
231
|
VALUE destination_value,
|
160
|
-
size_t destination_buffer_length
|
232
|
+
size_t destination_buffer_length,
|
233
|
+
bool gvl)
|
161
234
|
{
|
162
|
-
lzws_result_t result;
|
163
235
|
lzws_ext_result_t ext_result;
|
164
236
|
lzws_ext_byte_t* remaining_source = (lzws_ext_byte_t*) source;
|
165
237
|
size_t remaining_source_length = source_length;
|
166
238
|
size_t destination_length = 0;
|
167
239
|
size_t remaining_destination_buffer_length = destination_buffer_length;
|
168
240
|
|
241
|
+
decompress_args_t args = {
|
242
|
+
.state_ptr = state_ptr,
|
243
|
+
.remaining_source_ptr = &remaining_source,
|
244
|
+
.remaining_source_length_ptr = &remaining_source_length};
|
245
|
+
|
169
246
|
while (true) {
|
170
247
|
lzws_ext_byte_t* remaining_destination_buffer =
|
171
248
|
(lzws_ext_byte_t*) RSTRING_PTR(destination_value) + destination_length;
|
172
249
|
size_t prev_remaining_destination_buffer_length = remaining_destination_buffer_length;
|
173
250
|
|
174
|
-
|
175
|
-
|
176
|
-
&remaining_source,
|
177
|
-
&remaining_source_length,
|
178
|
-
&remaining_destination_buffer,
|
179
|
-
&remaining_destination_buffer_length);
|
251
|
+
args.remaining_destination_buffer = remaining_destination_buffer;
|
252
|
+
args.remaining_destination_buffer_length_ptr = &remaining_destination_buffer_length;
|
180
253
|
|
181
|
-
|
182
|
-
|
254
|
+
LZWS_EXT_GVL_WRAP(gvl, decompress_wrapper, &args);
|
255
|
+
if (args.result != 0 && args.result != LZWS_DECOMPRESSOR_NEEDS_MORE_DESTINATION) {
|
256
|
+
switch (args.result) {
|
183
257
|
case LZWS_DECOMPRESSOR_INVALID_MAGIC_HEADER:
|
184
258
|
case LZWS_DECOMPRESSOR_INVALID_MAX_CODE_BIT_LENGTH:
|
185
259
|
return LZWS_EXT_ERROR_VALIDATE_FAILED;
|
@@ -192,7 +266,7 @@ static inline lzws_ext_result_t decompress(
|
|
192
266
|
|
193
267
|
destination_length += prev_remaining_destination_buffer_length - remaining_destination_buffer_length;
|
194
268
|
|
195
|
-
if (result == LZWS_DECOMPRESSOR_NEEDS_MORE_DESTINATION) {
|
269
|
+
if (args.result == LZWS_DECOMPRESSOR_NEEDS_MORE_DESTINATION) {
|
196
270
|
ext_result = increase_destination_buffer(
|
197
271
|
destination_value, destination_length, &remaining_destination_buffer_length, destination_buffer_length);
|
198
272
|
|
@@ -218,10 +292,11 @@ static inline lzws_ext_result_t decompress(
|
|
218
292
|
|
219
293
|
VALUE lzws_ext_decompress_string(VALUE LZWS_EXT_UNUSED(self), VALUE source_value, VALUE options)
|
220
294
|
{
|
221
|
-
|
295
|
+
Check_Type(source_value, T_STRING);
|
222
296
|
Check_Type(options, T_HASH);
|
297
|
+
LZWS_EXT_GET_SIZE_OPTION(options, destination_buffer_length);
|
298
|
+
LZWS_EXT_GET_BOOL_OPTION(options, gvl);
|
223
299
|
LZWS_EXT_GET_DECOMPRESSOR_OPTIONS(options);
|
224
|
-
LZWS_EXT_GET_BUFFER_LENGTH_OPTION(options, destination_buffer_length);
|
225
300
|
|
226
301
|
lzws_decompressor_state_t* state_ptr;
|
227
302
|
|
@@ -247,8 +322,11 @@ VALUE lzws_ext_decompress_string(VALUE LZWS_EXT_UNUSED(self), VALUE source_value
|
|
247
322
|
lzws_ext_raise_error(LZWS_EXT_ERROR_ALLOCATE_FAILED);
|
248
323
|
}
|
249
324
|
|
325
|
+
const char* source = RSTRING_PTR(source_value);
|
326
|
+
size_t source_length = RSTRING_LEN(source_value);
|
327
|
+
|
250
328
|
lzws_ext_result_t ext_result =
|
251
|
-
decompress(state_ptr, source, source_length, destination_value, destination_buffer_length);
|
329
|
+
decompress(state_ptr, source, source_length, destination_value, destination_buffer_length, gvl);
|
252
330
|
|
253
331
|
lzws_decompressor_free_state(state_ptr);
|
254
332
|
|
@@ -259,6 +337,8 @@ VALUE lzws_ext_decompress_string(VALUE LZWS_EXT_UNUSED(self), VALUE source_value
|
|
259
337
|
return destination_value;
|
260
338
|
}
|
261
339
|
|
340
|
+
// -- exports --
|
341
|
+
|
262
342
|
void lzws_ext_string_exports(VALUE root_module)
|
263
343
|
{
|
264
344
|
rb_define_module_function(root_module, "_native_compress_string", RUBY_METHOD_FUNC(lzws_ext_compress_string), 2);
|
data/lib/lzws/file.rb
CHANGED
@@ -17,7 +17,7 @@ module LZWS
|
|
17
17
|
|
18
18
|
options = Option.get_compressor_options options, BUFFER_LENGTH_NAMES
|
19
19
|
|
20
|
-
open_files
|
20
|
+
open_files source, destination do |source_io, destination_io|
|
21
21
|
LZWS._native_compress_io source_io, destination_io, options
|
22
22
|
end
|
23
23
|
|
@@ -30,7 +30,7 @@ module LZWS
|
|
30
30
|
|
31
31
|
options = Option.get_decompressor_options options, BUFFER_LENGTH_NAMES
|
32
32
|
|
33
|
-
open_files
|
33
|
+
open_files source, destination do |source_io, destination_io|
|
34
34
|
LZWS._native_decompress_io source_io, destination_io, options
|
35
35
|
end
|
36
36
|
|
data/lib/lzws/option.rb
CHANGED
@@ -10,14 +10,39 @@ module LZWS
|
|
10
10
|
module Option
|
11
11
|
DEFAULT_BUFFER_LENGTH = 0
|
12
12
|
|
13
|
+
COMPRESSOR_DEFAULTS = {
|
14
|
+
:gvl => false,
|
15
|
+
:max_code_bit_length => nil,
|
16
|
+
:without_magic_header => nil,
|
17
|
+
:block_mode => nil,
|
18
|
+
:msb => nil,
|
19
|
+
:unaligned_bit_groups => nil,
|
20
|
+
:quiet => nil
|
21
|
+
}
|
22
|
+
.freeze
|
23
|
+
|
24
|
+
DECOMPRESSOR_DEFAULTS = {
|
25
|
+
:gvl => false,
|
26
|
+
:without_magic_header => nil,
|
27
|
+
:msb => nil,
|
28
|
+
:unaligned_bit_groups => nil,
|
29
|
+
:quiet => nil
|
30
|
+
}
|
31
|
+
.freeze
|
32
|
+
|
13
33
|
def self.get_compressor_options(options, buffer_length_names)
|
14
34
|
Validation.validate_hash options
|
15
35
|
|
16
|
-
buffer_length_defaults = buffer_length_names.each_with_object({})
|
17
|
-
|
36
|
+
buffer_length_defaults = buffer_length_names.each_with_object({}) do |name, defaults|
|
37
|
+
defaults[name] = DEFAULT_BUFFER_LENGTH
|
38
|
+
end
|
39
|
+
|
40
|
+
options = COMPRESSOR_DEFAULTS.merge(buffer_length_defaults).merge options
|
18
41
|
|
19
42
|
buffer_length_names.each { |name| Validation.validate_not_negative_integer options[name] }
|
20
43
|
|
44
|
+
Validation.validate_bool options[:gvl]
|
45
|
+
|
21
46
|
max_code_bit_length = options[:max_code_bit_length]
|
22
47
|
unless max_code_bit_length.nil?
|
23
48
|
Validation.validate_positive_integer max_code_bit_length
|
@@ -46,11 +71,16 @@ module LZWS
|
|
46
71
|
def self.get_decompressor_options(options, buffer_length_names)
|
47
72
|
Validation.validate_hash options
|
48
73
|
|
49
|
-
buffer_length_defaults = buffer_length_names.each_with_object({})
|
50
|
-
|
74
|
+
buffer_length_defaults = buffer_length_names.each_with_object({}) do |name, defaults|
|
75
|
+
defaults[name] = DEFAULT_BUFFER_LENGTH
|
76
|
+
end
|
77
|
+
|
78
|
+
options = DECOMPRESSOR_DEFAULTS.merge(buffer_length_defaults).merge options
|
51
79
|
|
52
80
|
buffer_length_names.each { |name| Validation.validate_not_negative_integer options[name] }
|
53
81
|
|
82
|
+
Validation.validate_bool options[:gvl]
|
83
|
+
|
54
84
|
without_magic_header = options[:without_magic_header]
|
55
85
|
Validation.validate_bool without_magic_header unless without_magic_header.nil?
|
56
86
|
|
data/lib/lzws/stream/abstract.rb
CHANGED
@@ -12,7 +12,8 @@ module LZWS
|
|
12
12
|
# Native stream is not seekable by design.
|
13
13
|
# Related methods like "seek" and "pos=" can't be implemented.
|
14
14
|
|
15
|
-
# It is not possible to maintain correspondance between bytes
|
15
|
+
# It is not possible to maintain correspondance between bytes
|
16
|
+
# consumed from source and bytes written to destination by design.
|
16
17
|
# We will consume all source bytes and maintain buffer with remaining destination data.
|
17
18
|
|
18
19
|
include Delegates
|
@@ -89,8 +90,9 @@ module LZWS
|
|
89
90
|
end
|
90
91
|
|
91
92
|
internal_encoding = args[1]
|
92
|
-
|
93
|
-
|
93
|
+
unless internal_encoding.nil? || internal_encoding.is_a?(::Encoding)
|
94
|
+
Validation.validate_string internal_encoding
|
95
|
+
end
|
94
96
|
|
95
97
|
transcode_options = args[2]
|
96
98
|
Validation.validate_hash transcode_options unless transcode_options.nil?
|
data/lib/lzws/stream/reader.rb
CHANGED
@@ -33,8 +33,9 @@ module LZWS
|
|
33
33
|
source_buffer_length = @options[:source_buffer_length]
|
34
34
|
Validation.validate_not_negative_integer source_buffer_length unless source_buffer_length.nil?
|
35
35
|
|
36
|
-
source_buffer_length
|
37
|
-
|
36
|
+
if source_buffer_length.nil? || source_buffer_length.zero?
|
37
|
+
source_buffer_length = Buffer::DEFAULT_SOURCE_BUFFER_LENGTH_FOR_DECOMPRESSOR
|
38
|
+
end
|
38
39
|
|
39
40
|
@source_buffer_length = source_buffer_length
|
40
41
|
end
|
data/lib/lzws/validation.rb
CHANGED
@@ -43,7 +43,9 @@ module LZWS
|
|
43
43
|
end
|
44
44
|
|
45
45
|
def self.validate_proc(value)
|
46
|
-
|
46
|
+
unless value.is_a?(::Proc) || value.is_a?(::Method) || value.is_a?(::UnboundMethod)
|
47
|
+
raise ValidateError, "invalid proc"
|
48
|
+
end
|
47
49
|
end
|
48
50
|
end
|
49
51
|
end
|
data/lib/lzws/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby-lzws
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.4.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andrew Aladjev
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-01-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: codecov
|
@@ -24,6 +24,20 @@ dependencies:
|
|
24
24
|
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: json
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
27
41
|
- !ruby/object:Gem::Dependency
|
28
42
|
name: minitar
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -44,28 +58,42 @@ dependencies:
|
|
44
58
|
requirements:
|
45
59
|
- - "~>"
|
46
60
|
- !ruby/object:Gem::Version
|
47
|
-
version: '5.
|
61
|
+
version: '5.15'
|
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: '5.
|
68
|
+
version: '5.15'
|
55
69
|
- !ruby/object:Gem::Dependency
|
56
70
|
name: ocg
|
57
71
|
requirement: !ruby/object:Gem::Requirement
|
58
72
|
requirements:
|
59
73
|
- - "~>"
|
60
74
|
- !ruby/object:Gem::Version
|
61
|
-
version: '1.
|
75
|
+
version: '1.4'
|
62
76
|
type: :development
|
63
77
|
prerelease: false
|
64
78
|
version_requirements: !ruby/object:Gem::Requirement
|
65
79
|
requirements:
|
66
80
|
- - "~>"
|
67
81
|
- !ruby/object:Gem::Version
|
68
|
-
version: '1.
|
82
|
+
version: '1.4'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: parallel
|
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'
|
69
97
|
- !ruby/object:Gem::Dependency
|
70
98
|
name: rake
|
71
99
|
requirement: !ruby/object:Gem::Requirement
|
@@ -100,28 +128,56 @@ dependencies:
|
|
100
128
|
requirements:
|
101
129
|
- - "~>"
|
102
130
|
- !ruby/object:Gem::Version
|
103
|
-
version: '
|
131
|
+
version: '1.24'
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - "~>"
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '1.24'
|
139
|
+
- !ruby/object:Gem::Dependency
|
140
|
+
name: rubocop-minitest
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
142
|
+
requirements:
|
143
|
+
- - "~>"
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: '0.17'
|
104
146
|
type: :development
|
105
147
|
prerelease: false
|
106
148
|
version_requirements: !ruby/object:Gem::Requirement
|
107
149
|
requirements:
|
108
150
|
- - "~>"
|
109
151
|
- !ruby/object:Gem::Version
|
110
|
-
version: '0.
|
152
|
+
version: '0.17'
|
111
153
|
- !ruby/object:Gem::Dependency
|
112
154
|
name: rubocop-performance
|
113
155
|
requirement: !ruby/object:Gem::Requirement
|
114
156
|
requirements:
|
115
157
|
- - "~>"
|
116
158
|
- !ruby/object:Gem::Version
|
117
|
-
version: '1.
|
159
|
+
version: '1.13'
|
160
|
+
type: :development
|
161
|
+
prerelease: false
|
162
|
+
version_requirements: !ruby/object:Gem::Requirement
|
163
|
+
requirements:
|
164
|
+
- - "~>"
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
version: '1.13'
|
167
|
+
- !ruby/object:Gem::Dependency
|
168
|
+
name: rubocop-rake
|
169
|
+
requirement: !ruby/object:Gem::Requirement
|
170
|
+
requirements:
|
171
|
+
- - "~>"
|
172
|
+
- !ruby/object:Gem::Version
|
173
|
+
version: '0.6'
|
118
174
|
type: :development
|
119
175
|
prerelease: false
|
120
176
|
version_requirements: !ruby/object:Gem::Requirement
|
121
177
|
requirements:
|
122
178
|
- - "~>"
|
123
179
|
- !ruby/object:Gem::Version
|
124
|
-
version: '
|
180
|
+
version: '0.6'
|
125
181
|
- !ruby/object:Gem::Dependency
|
126
182
|
name: simplecov
|
127
183
|
requirement: !ruby/object:Gem::Requirement
|
@@ -136,7 +192,7 @@ dependencies:
|
|
136
192
|
- - ">="
|
137
193
|
- !ruby/object:Gem::Version
|
138
194
|
version: '0'
|
139
|
-
description:
|
195
|
+
description:
|
140
196
|
email: aladjev.andrew@gmail.com
|
141
197
|
executables: []
|
142
198
|
extensions:
|
@@ -152,6 +208,7 @@ files:
|
|
152
208
|
- ext/lzws_ext/common.h
|
153
209
|
- ext/lzws_ext/error.c
|
154
210
|
- ext/lzws_ext/error.h
|
211
|
+
- ext/lzws_ext/gvl.h
|
155
212
|
- ext/lzws_ext/io.c
|
156
213
|
- ext/lzws_ext/io.h
|
157
214
|
- ext/lzws_ext/macro.h
|
@@ -184,8 +241,9 @@ files:
|
|
184
241
|
homepage: https://github.com/andrew-aladev/ruby-lzws
|
185
242
|
licenses:
|
186
243
|
- MIT
|
187
|
-
metadata:
|
188
|
-
|
244
|
+
metadata:
|
245
|
+
rubygems_mfa_required: 'true'
|
246
|
+
post_install_message:
|
189
247
|
rdoc_options: []
|
190
248
|
require_paths:
|
191
249
|
- lib
|
@@ -200,8 +258,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
200
258
|
- !ruby/object:Gem::Version
|
201
259
|
version: '0'
|
202
260
|
requirements: []
|
203
|
-
rubygems_version: 3.
|
204
|
-
signing_key:
|
261
|
+
rubygems_version: 3.3.3
|
262
|
+
signing_key:
|
205
263
|
specification_version: 4
|
206
|
-
summary: Ruby bindings for lzws library.
|
264
|
+
summary: Ruby bindings for lzws library (compatible with UNIX compress).
|
207
265
|
test_files: []
|