bindata 2.4.14 → 2.5.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 +4 -4
- data/ChangeLog.rdoc +20 -0
- data/LICENSE +25 -0
- data/NEWS.rdoc +5 -0
- data/README.md +6 -9
- data/bindata.gemspec +9 -4
- data/examples/NBT.txt +1 -1
- data/examples/list.rb +1 -1
- data/lib/bindata/alignment.rb +15 -7
- data/lib/bindata/array.rb +54 -54
- data/lib/bindata/base.rb +14 -25
- data/lib/bindata/base_primitive.rb +24 -20
- data/lib/bindata/bits.rb +5 -5
- data/lib/bindata/buffer.rb +89 -11
- data/lib/bindata/choice.rb +9 -6
- data/lib/bindata/count_bytes_remaining.rb +1 -1
- data/lib/bindata/delayed_io.rb +12 -11
- data/lib/bindata/dsl.rb +34 -32
- data/lib/bindata/float.rb +3 -3
- data/lib/bindata/framework.rb +8 -10
- data/lib/bindata/int.rb +9 -9
- data/lib/bindata/io.rb +276 -253
- data/lib/bindata/name.rb +1 -1
- data/lib/bindata/params.rb +9 -7
- data/lib/bindata/primitive.rb +3 -3
- data/lib/bindata/registry.rb +18 -18
- data/lib/bindata/rest.rb +1 -1
- data/lib/bindata/sanitize.rb +9 -16
- data/lib/bindata/section.rb +97 -0
- data/lib/bindata/skip.rb +140 -51
- data/lib/bindata/string.rb +9 -9
- data/lib/bindata/stringz.rb +12 -10
- data/lib/bindata/struct.rb +83 -66
- data/lib/bindata/trace.rb +35 -42
- data/lib/bindata/transform/brotli.rb +35 -0
- data/lib/bindata/transform/lz4.rb +35 -0
- data/lib/bindata/transform/lzma.rb +35 -0
- data/lib/bindata/transform/xor.rb +19 -0
- data/lib/bindata/transform/xz.rb +35 -0
- data/lib/bindata/transform/zlib.rb +33 -0
- data/lib/bindata/transform/zstd.rb +35 -0
- data/lib/bindata/uint8_array.rb +2 -2
- data/lib/bindata/version.rb +1 -1
- data/lib/bindata/virtual.rb +4 -7
- data/lib/bindata/warnings.rb +1 -1
- data/lib/bindata.rb +1 -0
- data/test/array_test.rb +10 -8
- data/test/buffer_test.rb +9 -0
- data/test/choice_test.rb +1 -1
- data/test/delayed_io_test.rb +16 -0
- data/test/io_test.rb +54 -246
- data/test/registry_test.rb +1 -1
- data/test/section_test.rb +111 -0
- data/test/skip_test.rb +55 -10
- data/test/string_test.rb +4 -4
- data/test/stringz_test.rb +8 -0
- data/test/struct_test.rb +87 -12
- data/test/system_test.rb +119 -1
- data/test/test_helper.rb +24 -13
- data/test/warnings_test.rb +12 -0
- metadata +19 -22
- data/.gitignore +0 -2
- data/.travis.yml +0 -15
- data/BSDL +0 -22
- data/COPYING +0 -52
- data/INSTALL +0 -12
- data/lib/bindata/offset.rb +0 -94
- data/test/offset_test.rb +0 -100
data/test/string_test.rb
CHANGED
@@ -298,15 +298,15 @@ end
|
|
298
298
|
describe BinData::String, "warnings" do
|
299
299
|
it "warns if has :asserted_value but no :length" do
|
300
300
|
obj = BinData::String.new(asserted_value: "ABC")
|
301
|
-
|
301
|
+
_ {
|
302
302
|
_ { obj.read("abcde") }.must_raise BinData::ValidityError
|
303
|
-
|
303
|
+
}.must_warn "obj does not have a :read_length parameter - returning empty string"
|
304
304
|
end
|
305
305
|
|
306
306
|
it "warns if has :value but no :read_length" do
|
307
307
|
obj = BinData::String.new(value: "ABC")
|
308
|
-
|
308
|
+
_ {
|
309
309
|
obj.read("abcde")
|
310
|
-
|
310
|
+
}.must_warn "obj does not have a :read_length parameter - returning empty string"
|
311
311
|
end
|
312
312
|
end
|
data/test/stringz_test.rb
CHANGED
@@ -76,6 +76,14 @@ end
|
|
76
76
|
describe BinData::Stringz, "with max_length" do
|
77
77
|
let(:obj) { BinData::Stringz.new(max_length: 5) }
|
78
78
|
|
79
|
+
it "fails if max_length is less that 1" do
|
80
|
+
obj = BinData::Stringz.new(max_length: 0)
|
81
|
+
|
82
|
+
_{ obj.read "abc\0" }.must_raise ArgumentError
|
83
|
+
_{ obj.to_binary_s }.must_raise ArgumentError
|
84
|
+
_{ obj.num_bytes }.must_raise ArgumentError
|
85
|
+
end
|
86
|
+
|
79
87
|
it "reads less than max_length" do
|
80
88
|
io = StringIO.new("abc\0xyz")
|
81
89
|
obj.read(io)
|
data/test/struct_test.rb
CHANGED
@@ -45,24 +45,65 @@ describe BinData::Struct, "with anonymous fields" do
|
|
45
45
|
params = { fields: [
|
46
46
|
[:int8, :a, {initial_value: 5}],
|
47
47
|
[:int8, nil],
|
48
|
-
[:int8, '', {value: :a}]
|
48
|
+
[:int8, '', {value: :a}],
|
49
|
+
[:int8, :b]
|
49
50
|
] }
|
50
51
|
BinData::Struct.new(params)
|
51
52
|
}
|
52
53
|
|
53
54
|
it "only shows non anonymous fields" do
|
54
|
-
_(obj.field_names).must_equal [:a]
|
55
|
+
_(obj.field_names).must_equal [:a, :b]
|
55
56
|
end
|
56
57
|
|
57
58
|
it "does not include anonymous fields in snapshot" do
|
58
|
-
obj.a =
|
59
|
-
_(obj.snapshot).must_equal({a:
|
59
|
+
obj.a = 6
|
60
|
+
_(obj.snapshot).must_equal({a: 6, b: 0})
|
60
61
|
end
|
61
62
|
|
62
63
|
it "writes anonymous fields" do
|
63
|
-
obj.read("\001\002\003")
|
64
|
+
obj.read("\001\002\003\004")
|
64
65
|
obj.a.clear
|
65
|
-
_(obj.to_binary_s).must_equal_binary "\005\002\005"
|
66
|
+
_(obj.to_binary_s).must_equal_binary "\005\002\005\004"
|
67
|
+
end
|
68
|
+
|
69
|
+
it "does not include anonymous fields in each_pair" do
|
70
|
+
_(obj.each_pair.count).must_equal 2
|
71
|
+
end
|
72
|
+
|
73
|
+
it "includes anonymous fields in each_pair when specified" do
|
74
|
+
_(obj.each_pair(true).count).must_equal 4
|
75
|
+
end
|
76
|
+
|
77
|
+
it "clears" do
|
78
|
+
obj.b = 3
|
79
|
+
refute obj.clear?
|
80
|
+
|
81
|
+
obj.clear
|
82
|
+
assert obj.clear?
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
describe BinData::Struct, "with onlyif fields" do
|
87
|
+
let(:obj) {
|
88
|
+
params = { fields: [
|
89
|
+
[:int8, :a, {initial_value: 2}],
|
90
|
+
[:int8, :b, {onlyif: -> { a.odd? }}]
|
91
|
+
] }
|
92
|
+
BinData::Struct.new(params)
|
93
|
+
}
|
94
|
+
|
95
|
+
it "#fieldnames includes all fields" do
|
96
|
+
_(obj.field_names).must_equal [:a, :b]
|
97
|
+
end
|
98
|
+
|
99
|
+
it "#snapshot checks for onlyif" do
|
100
|
+
_(obj.snapshot.keys).must_equal [:a]
|
101
|
+
end
|
102
|
+
|
103
|
+
it "includes fields when required" do
|
104
|
+
refute obj.b?
|
105
|
+
obj.a = 3
|
106
|
+
assert obj.b?
|
66
107
|
end
|
67
108
|
end
|
68
109
|
|
@@ -140,10 +181,16 @@ describe BinData::Struct, "with multiple fields" do
|
|
140
181
|
_(obj[:a]).must_equal 1
|
141
182
|
end
|
142
183
|
|
143
|
-
it "handles
|
184
|
+
it "handles nonexistent elements" do
|
144
185
|
_(obj[:does_not_exist]).must_be_nil
|
145
186
|
end
|
146
187
|
|
188
|
+
it "ignores setting nonexistent elements" do
|
189
|
+
snap = obj.snapshot
|
190
|
+
obj[:does_not_exist] = 3
|
191
|
+
_(obj.snapshot).must_equal snap
|
192
|
+
end
|
193
|
+
|
147
194
|
it "writes elements dynamically" do
|
148
195
|
obj[:a] = 2
|
149
196
|
_(obj.a).must_equal 2
|
@@ -225,6 +272,20 @@ describe BinData::Struct, "with multiple fields" do
|
|
225
272
|
obj.snapshot.each_pair { |k, v| keys << k }
|
226
273
|
_(keys).must_equal [:a, :b]
|
227
274
|
end
|
275
|
+
|
276
|
+
it "accesses field" do
|
277
|
+
_(obj.snapshot[:a]).must_equal 1
|
278
|
+
end
|
279
|
+
|
280
|
+
it "fails on unknown method call" do
|
281
|
+
_ { obj.snapshot.does_not_exist }.must_raise NoMethodError
|
282
|
+
end
|
283
|
+
|
284
|
+
it "will not set attribute with nil value" do
|
285
|
+
refute obj.snapshot.key?(:foo)
|
286
|
+
obj.snapshot[:foo] = nil
|
287
|
+
refute obj.snapshot.key?(:foo)
|
288
|
+
end
|
228
289
|
end
|
229
290
|
end
|
230
291
|
|
@@ -402,30 +463,44 @@ describe BinData::Struct, "with byte_align" do
|
|
402
463
|
let(:obj) {
|
403
464
|
params = { fields: [[:int8, :a],
|
404
465
|
[:int8, :b, byte_align: 5],
|
405
|
-
[:bit2, :c],
|
466
|
+
[:bit2, :c, onlyif: -> { a == 1}],
|
406
467
|
[:int8, :d, byte_align: 3]] }
|
407
468
|
BinData::Struct.new(params)
|
408
469
|
}
|
409
470
|
|
410
471
|
it "has #num_bytes" do
|
472
|
+
_(obj.num_bytes).must_equal 7
|
473
|
+
end
|
474
|
+
|
475
|
+
it "has #num_bytes with onlyif" do
|
476
|
+
obj.a = 1
|
411
477
|
_(obj.num_bytes).must_equal 10
|
412
478
|
end
|
413
479
|
|
414
|
-
it "reads" do
|
480
|
+
it "reads with onlyif" do
|
415
481
|
obj.read("\x01\x00\x00\x00\x00\x02\xc0\x00\x00\x04")
|
416
482
|
_(obj.snapshot).must_equal({ a: 1, b: 2, c: 3, d: 4 })
|
417
483
|
end
|
418
484
|
|
419
|
-
it "
|
485
|
+
it "reads without onlyif" do
|
486
|
+
obj.read("\x00\x00\x00\x00\x00\x02\x04")
|
487
|
+
_(obj.snapshot).must_equal({ a: 0, b: 2, d: 4 })
|
488
|
+
end
|
489
|
+
|
490
|
+
it "writes with onlyif" do
|
420
491
|
obj.assign(a: 1, b: 2, c: 3, d: 4)
|
421
492
|
_(obj.to_binary_s).must_equal_binary "\x01\x00\x00\x00\x00\x02\xc0\x00\x00\x04"
|
422
493
|
end
|
423
494
|
|
495
|
+
it "writes without onlyif" do
|
496
|
+
obj.assign(a: 0, b: 2, c: 3, d: 4)
|
497
|
+
_(obj.to_binary_s).must_equal_binary "\x00\x00\x00\x00\x00\x02\x04"
|
498
|
+
end
|
499
|
+
|
424
500
|
it "has correct offsets" do
|
425
501
|
_(obj.a.rel_offset).must_equal 0
|
426
502
|
_(obj.b.rel_offset).must_equal 5
|
427
|
-
_(obj.
|
428
|
-
_(obj.d.rel_offset).must_equal 9
|
503
|
+
_(obj.d.rel_offset).must_equal 6
|
429
504
|
end
|
430
505
|
end
|
431
506
|
|
data/test/system_test.rb
CHANGED
@@ -229,6 +229,19 @@ describe "Tracing" do
|
|
229
229
|
|
230
230
|
_(io.value).must_equal "obj => \"000000000011111111112222222222...\n"
|
231
231
|
end
|
232
|
+
|
233
|
+
it "can be nested" do
|
234
|
+
obj = BinData::String.new(read_length: 5)
|
235
|
+
|
236
|
+
io = StringIO.new
|
237
|
+
BinData::trace_reading(io) {
|
238
|
+
BinData::trace_reading(io) {
|
239
|
+
obj.read("12345")
|
240
|
+
}
|
241
|
+
}
|
242
|
+
|
243
|
+
_(io.value).must_equal "obj => \"12345\"\n"
|
244
|
+
end
|
232
245
|
end
|
233
246
|
|
234
247
|
describe "Forward referencing with Primitive" do
|
@@ -381,7 +394,7 @@ describe BinData::Record, "encoding" do
|
|
381
394
|
end
|
382
395
|
|
383
396
|
it "returns binary encoded data despite Encoding.default_internal" do
|
384
|
-
w, $-w = $-w,
|
397
|
+
w, $-w = $-w, nil
|
385
398
|
before_enc = Encoding.default_internal
|
386
399
|
|
387
400
|
begin
|
@@ -394,3 +407,108 @@ describe BinData::Record, "encoding" do
|
|
394
407
|
end
|
395
408
|
end
|
396
409
|
end
|
410
|
+
|
411
|
+
describe BinData::Record, "buffer num_bytes" do
|
412
|
+
class BufferNumBytesRecord < BinData::Record
|
413
|
+
buffer :b, length: 10 do
|
414
|
+
int8 :a
|
415
|
+
count_bytes_remaining :nbytes
|
416
|
+
end
|
417
|
+
end
|
418
|
+
|
419
|
+
it "counts bytes remaining in the buffer" do
|
420
|
+
obj = BufferNumBytesRecord.read "12345678901234567890"
|
421
|
+
_(obj.b.nbytes).must_equal 9
|
422
|
+
end
|
423
|
+
|
424
|
+
it "counts bytes remaining in the buffer with short streams" do
|
425
|
+
obj = BufferNumBytesRecord.read "12345"
|
426
|
+
_(obj.b.nbytes).must_equal 4
|
427
|
+
end
|
428
|
+
|
429
|
+
it "assumes buffer is full with non-seekable short streams" do
|
430
|
+
rd, wr = IO::pipe
|
431
|
+
io = BinData::IO::Read.new(rd)
|
432
|
+
wr.write "12345"
|
433
|
+
wr.close
|
434
|
+
|
435
|
+
obj = BufferNumBytesRecord.read(io)
|
436
|
+
_(obj.b.nbytes).must_equal 9
|
437
|
+
rd.close
|
438
|
+
end
|
439
|
+
end
|
440
|
+
|
441
|
+
describe BinData::Buffer, "with seek_abs" do
|
442
|
+
class BufferSkipRecord < BinData::Record
|
443
|
+
endian :little
|
444
|
+
mandatory_parameter :seek_offset
|
445
|
+
|
446
|
+
uint8
|
447
|
+
buffer :buf, length: 5 do
|
448
|
+
uint8
|
449
|
+
uint8
|
450
|
+
skip to_abs_offset: :seek_offset
|
451
|
+
uint8 :a
|
452
|
+
end
|
453
|
+
uint8
|
454
|
+
end
|
455
|
+
|
456
|
+
let(:str) { "\001\002\003\004\005\006\007" }
|
457
|
+
|
458
|
+
## TODO: enable this if we decide to allow backwards seeking
|
459
|
+
#backwards_seeking = false
|
460
|
+
#
|
461
|
+
#it "won't seek backwards before buffer" do
|
462
|
+
# skip unless backwards_seeking
|
463
|
+
# _ { BufferSkipRecord.new(seek_offset: 0).read(str) }.must_raise(IOError)
|
464
|
+
#end
|
465
|
+
#
|
466
|
+
#it "seeks backwards to start of buffer" do
|
467
|
+
# skip unless backwards_seeking
|
468
|
+
# obj = BufferSkipRecord.new(seek_offset: 1).read(str)
|
469
|
+
# _(obj.buf.a).must_equal 2
|
470
|
+
#end
|
471
|
+
#
|
472
|
+
#it "seeks backwards inside buffer" do
|
473
|
+
# skip unless backwards_seeking
|
474
|
+
# obj = BufferSkipRecord.new(seek_offset: 2).read(str)
|
475
|
+
# _(obj.buf.a).must_equal 3
|
476
|
+
#end
|
477
|
+
|
478
|
+
it "seeks forwards inside buffer" do
|
479
|
+
obj = BufferSkipRecord.new(seek_offset: 4).read(str)
|
480
|
+
_(obj.buf.a).must_equal 5
|
481
|
+
end
|
482
|
+
|
483
|
+
it "seeks to end of buffer" do
|
484
|
+
obj = BufferSkipRecord.new(seek_offset: 5).read(str)
|
485
|
+
_(obj.buf.a).must_equal 6
|
486
|
+
end
|
487
|
+
|
488
|
+
it "won't seek after buffer" do
|
489
|
+
_ { BufferSkipRecord.new(seek_offset: 6).read(str) }.must_raise(IOError)
|
490
|
+
end
|
491
|
+
end
|
492
|
+
|
493
|
+
|
494
|
+
describe BinData::Record, "buffered readahead" do
|
495
|
+
class BufferedReadaheadRecord < BinData::Record
|
496
|
+
buffer :a, length: 5 do
|
497
|
+
skip do
|
498
|
+
string read_length: 1, assert: "X"
|
499
|
+
end
|
500
|
+
string :b, read_length: 1
|
501
|
+
end
|
502
|
+
string :c, read_length: 1
|
503
|
+
end
|
504
|
+
|
505
|
+
it "reads ahead inside the buffer" do
|
506
|
+
obj = BufferedReadaheadRecord.read "12X4567890"
|
507
|
+
_(obj.a.b).must_equal "X"
|
508
|
+
_(obj.c).must_equal "6"
|
509
|
+
end
|
510
|
+
|
511
|
+
it "doesn't readahead outside the buffer" do
|
512
|
+
_ { BufferedReadaheadRecord.read "123456X890" }.must_raise IOError
|
513
|
+
end
|
514
|
+
end
|
data/test/test_helper.rb
CHANGED
@@ -1,7 +1,9 @@
|
|
1
1
|
require 'rubygems'
|
2
2
|
|
3
|
-
require '
|
4
|
-
|
3
|
+
require 'simplecov'
|
4
|
+
SimpleCov.start do
|
5
|
+
enable_coverage :branch
|
6
|
+
end
|
5
7
|
|
6
8
|
require 'minitest/autorun'
|
7
9
|
require 'stringio'
|
@@ -30,32 +32,41 @@ module Kernel
|
|
30
32
|
def value_read_from_written
|
31
33
|
self.class.read(self.to_binary_s)
|
32
34
|
end
|
35
|
+
end
|
33
36
|
|
34
|
-
|
35
|
-
|
37
|
+
module Minitest::Assertions
|
38
|
+
def assert_equals_binary(expected, actual)
|
39
|
+
assert_equal expected.dup.force_encoding(Encoding::BINARY), actual
|
36
40
|
end
|
37
41
|
|
38
|
-
def
|
39
|
-
ex =
|
40
|
-
(ex.message)
|
42
|
+
def assert_raises_on_line(exp, line, msg = nil, &block)
|
43
|
+
ex = assert_raises(exp, &block)
|
44
|
+
assert_equal(msg, ex.message) if msg
|
41
45
|
|
42
|
-
idx = ex.backtrace.find_index { |bt| /:in `
|
46
|
+
idx = ex.backtrace.find_index { |bt| /:in `assert_raises_on_line'$/ =~ bt }
|
43
47
|
|
44
48
|
line_num_regex = /.*:(\d+)(:.*|$)/
|
45
49
|
err_line = line_num_regex.match(ex.backtrace[0])[1].to_i
|
46
|
-
ref_line = line_num_regex.match(ex.backtrace[idx +
|
50
|
+
ref_line = line_num_regex.match(ex.backtrace[idx + 2])[1].to_i
|
47
51
|
|
48
|
-
(err_line - ref_line)
|
52
|
+
assert_equal((err_line - ref_line), line)
|
49
53
|
end
|
50
54
|
|
51
|
-
def
|
55
|
+
def assert_warns(msg, &block)
|
52
56
|
result = ""
|
53
57
|
callable = proc { |str|
|
54
58
|
result = str
|
55
59
|
}
|
56
|
-
|
60
|
+
Kernel.stub(:warn, callable) do
|
57
61
|
block.call
|
58
62
|
end
|
59
|
-
|
63
|
+
|
64
|
+
assert_equal msg, result
|
60
65
|
end
|
61
66
|
end
|
67
|
+
|
68
|
+
module Minitest::Expectations
|
69
|
+
infect_an_assertion :assert_equals_binary, :must_equal_binary
|
70
|
+
infect_an_assertion :assert_raises_on_line, :must_raise_on_line, :block
|
71
|
+
infect_an_assertion :assert_warns, :must_warn, :block
|
72
|
+
end
|
data/test/warnings_test.rb
CHANGED
@@ -15,6 +15,18 @@ describe BinData::Base, "when defining" do
|
|
15
15
|
}.must_raise RuntimeError
|
16
16
|
end
|
17
17
|
|
18
|
+
it "fails if #initialize is overridden on BasePrimitive" do
|
19
|
+
class BasePrimitiveWithInitialize < BinData::String
|
20
|
+
def initialize(params = {}, parent = nil)
|
21
|
+
super
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
_ {
|
26
|
+
BasePrimitiveWithInitialize.new
|
27
|
+
}.must_raise RuntimeError
|
28
|
+
end
|
29
|
+
|
18
30
|
it "handles if #initialize is naively renamed to #initialize_instance" do
|
19
31
|
class BaseWithInitializeInstance < BinData::Base
|
20
32
|
def initialize_instance(params = {}, parent = nil)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bindata
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dion Mendel
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 1980-01-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -31,9 +31,6 @@ dependencies:
|
|
31
31
|
- - ">"
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: 5.0.0
|
34
|
-
- - "<"
|
35
|
-
- !ruby/object:Gem::Version
|
36
|
-
version: 5.12.0
|
37
34
|
type: :development
|
38
35
|
prerelease: false
|
39
36
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -41,11 +38,8 @@ dependencies:
|
|
41
38
|
- - ">"
|
42
39
|
- !ruby/object:Gem::Version
|
43
40
|
version: 5.0.0
|
44
|
-
- - "<"
|
45
|
-
- !ruby/object:Gem::Version
|
46
|
-
version: 5.12.0
|
47
41
|
- !ruby/object:Gem::Dependency
|
48
|
-
name:
|
42
|
+
name: simplecov
|
49
43
|
requirement: !ruby/object:Gem::Requirement
|
50
44
|
requirements:
|
51
45
|
- - ">="
|
@@ -71,13 +65,9 @@ extensions: []
|
|
71
65
|
extra_rdoc_files:
|
72
66
|
- NEWS.rdoc
|
73
67
|
files:
|
74
|
-
- ".gitignore"
|
75
|
-
- ".travis.yml"
|
76
|
-
- BSDL
|
77
|
-
- COPYING
|
78
68
|
- ChangeLog.rdoc
|
79
69
|
- Gemfile
|
80
|
-
-
|
70
|
+
- LICENSE
|
81
71
|
- NEWS.rdoc
|
82
72
|
- README.md
|
83
73
|
- Rakefile
|
@@ -105,18 +95,25 @@ files:
|
|
105
95
|
- lib/bindata/io.rb
|
106
96
|
- lib/bindata/lazy.rb
|
107
97
|
- lib/bindata/name.rb
|
108
|
-
- lib/bindata/offset.rb
|
109
98
|
- lib/bindata/params.rb
|
110
99
|
- lib/bindata/primitive.rb
|
111
100
|
- lib/bindata/record.rb
|
112
101
|
- lib/bindata/registry.rb
|
113
102
|
- lib/bindata/rest.rb
|
114
103
|
- lib/bindata/sanitize.rb
|
104
|
+
- lib/bindata/section.rb
|
115
105
|
- lib/bindata/skip.rb
|
116
106
|
- lib/bindata/string.rb
|
117
107
|
- lib/bindata/stringz.rb
|
118
108
|
- lib/bindata/struct.rb
|
119
109
|
- lib/bindata/trace.rb
|
110
|
+
- lib/bindata/transform/brotli.rb
|
111
|
+
- lib/bindata/transform/lz4.rb
|
112
|
+
- lib/bindata/transform/lzma.rb
|
113
|
+
- lib/bindata/transform/xor.rb
|
114
|
+
- lib/bindata/transform/xz.rb
|
115
|
+
- lib/bindata/transform/zlib.rb
|
116
|
+
- lib/bindata/transform/zstd.rb
|
120
117
|
- lib/bindata/uint8_array.rb
|
121
118
|
- lib/bindata/version.rb
|
122
119
|
- lib/bindata/virtual.rb
|
@@ -134,12 +131,12 @@ files:
|
|
134
131
|
- test/int_test.rb
|
135
132
|
- test/io_test.rb
|
136
133
|
- test/lazy_test.rb
|
137
|
-
- test/offset_test.rb
|
138
134
|
- test/params_test.rb
|
139
135
|
- test/primitive_test.rb
|
140
136
|
- test/record_test.rb
|
141
137
|
- test/registry_test.rb
|
142
138
|
- test/rest_test.rb
|
139
|
+
- test/section_test.rb
|
143
140
|
- test/skip_test.rb
|
144
141
|
- test/string_test.rb
|
145
142
|
- test/stringz_test.rb
|
@@ -151,9 +148,9 @@ files:
|
|
151
148
|
- test/warnings_test.rb
|
152
149
|
homepage: https://github.com/dmendel/bindata
|
153
150
|
licenses:
|
154
|
-
-
|
151
|
+
- BSD-2-Clause
|
155
152
|
metadata: {}
|
156
|
-
post_install_message:
|
153
|
+
post_install_message:
|
157
154
|
rdoc_options:
|
158
155
|
- "--main"
|
159
156
|
- NEWS.rdoc
|
@@ -163,15 +160,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
163
160
|
requirements:
|
164
161
|
- - ">="
|
165
162
|
- !ruby/object:Gem::Version
|
166
|
-
version:
|
163
|
+
version: 2.5.0
|
167
164
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
168
165
|
requirements:
|
169
166
|
- - ">="
|
170
167
|
- !ruby/object:Gem::Version
|
171
168
|
version: '0'
|
172
169
|
requirements: []
|
173
|
-
rubygems_version: 3.
|
174
|
-
signing_key:
|
170
|
+
rubygems_version: 3.4.22
|
171
|
+
signing_key:
|
175
172
|
specification_version: 4
|
176
173
|
summary: A declarative way to read and write binary file formats
|
177
174
|
test_files: []
|
data/.gitignore
DELETED
data/.travis.yml
DELETED
data/BSDL
DELETED
@@ -1,22 +0,0 @@
|
|
1
|
-
Copyright (C) 2007-2012 Dion Mendel. All rights reserved.
|
2
|
-
|
3
|
-
Redistribution and use in source and binary forms, with or without
|
4
|
-
modification, are permitted provided that the following conditions
|
5
|
-
are met:
|
6
|
-
1. Redistributions of source code must retain the above copyright
|
7
|
-
notice, this list of conditions and the following disclaimer.
|
8
|
-
2. Redistributions in binary form must reproduce the above copyright
|
9
|
-
notice, this list of conditions and the following disclaimer in the
|
10
|
-
documentation and/or other materials provided with the distribution.
|
11
|
-
|
12
|
-
THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
|
13
|
-
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
14
|
-
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
15
|
-
ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
|
16
|
-
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
17
|
-
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
18
|
-
OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
19
|
-
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
20
|
-
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
21
|
-
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
22
|
-
SUCH DAMAGE.
|
data/COPYING
DELETED
@@ -1,52 +0,0 @@
|
|
1
|
-
BinData is copyrighted free software by Dion Mendel <bindata@dm9.info>.
|
2
|
-
You can redistribute it and/or modify it under either the terms of the
|
3
|
-
2-clause BSDL (see the file BSDL), or the conditions below:
|
4
|
-
|
5
|
-
1. You may make and give away verbatim copies of the source form of the
|
6
|
-
software without restriction, provided that you duplicate all of the
|
7
|
-
original copyright notices and associated disclaimers.
|
8
|
-
|
9
|
-
2. You may modify your copy of the software in any way, provided that
|
10
|
-
you do at least ONE of the following:
|
11
|
-
|
12
|
-
a) place your modifications in the Public Domain or otherwise
|
13
|
-
make them Freely Available, such as by posting said
|
14
|
-
modifications to Usenet or an equivalent medium, or by allowing
|
15
|
-
the author to include your modifications in the software.
|
16
|
-
|
17
|
-
b) use the modified software only within your corporation or
|
18
|
-
organization.
|
19
|
-
|
20
|
-
c) give non-standard binaries non-standard names, with
|
21
|
-
instructions on where to get the original software distribution.
|
22
|
-
|
23
|
-
d) make other distribution arrangements with the author.
|
24
|
-
|
25
|
-
3. You may distribute the software in object code or binary form,
|
26
|
-
provided that you do at least ONE of the following:
|
27
|
-
|
28
|
-
a) distribute the binaries and library files of the software,
|
29
|
-
together with instructions (in the manual page or equivalent)
|
30
|
-
on where to get the original distribution.
|
31
|
-
|
32
|
-
b) accompany the distribution with the machine-readable source of
|
33
|
-
the software.
|
34
|
-
|
35
|
-
c) give non-standard binaries non-standard names, with
|
36
|
-
instructions on where to get the original software distribution.
|
37
|
-
|
38
|
-
d) make other distribution arrangements with the author.
|
39
|
-
|
40
|
-
4. You may modify and include the part of the software into any other
|
41
|
-
software (possibly commercial).
|
42
|
-
|
43
|
-
5. The scripts and library files supplied as input to or produced as
|
44
|
-
output from the software do not automatically fall under the
|
45
|
-
copyright of the software, but belong to whomever generated them,
|
46
|
-
and may be sold commercially, and may be aggregated with this
|
47
|
-
software.
|
48
|
-
|
49
|
-
6. THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR
|
50
|
-
IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
|
51
|
-
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
52
|
-
PURPOSE.
|
data/INSTALL
DELETED
@@ -1,12 +0,0 @@
|
|
1
|
-
This package is designed to be installed with rubygems.
|
2
|
-
|
3
|
-
$ gem install bindata
|
4
|
-
|
5
|
-
If you are using ruby 1.8
|
6
|
-
|
7
|
-
$ gem install bindata -v '~> 1.8.0'
|
8
|
-
|
9
|
-
If you are not using rubygems, you may like to install BinData with
|
10
|
-
Minero Aoki's setup.rb found at:
|
11
|
-
|
12
|
-
https://github.com/rubyworks/setup
|