bindata 2.4.11 → 2.4.12
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/ChangeLog.rdoc +4 -0
- data/lib/bindata/delayed_io.rb +1 -12
- data/lib/bindata/struct.rb +9 -2
- data/lib/bindata/version.rb +1 -1
- data/test/delayed_io_test.rb +3 -3
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3688cea66b3a68f7f45ecd4b89b632e9e4438ee40ff4f59c57bbe0a68130e7d6
|
4
|
+
data.tar.gz: 647a570fd024d8938297d2fb4d2ac0123d03befaf0e5d3441627601d86694d8f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ddb2cd1156f3200fcc1bcce2d1a0bf5554f52babd692652debb71a8b56a9dced9c0f76db22884599f475b91d549f915344fcc1ec71a7f28be8dcb87192c968a5
|
7
|
+
data.tar.gz: ea223714bb2753b3b5dd626711dbffdc328ed326d2218a5ef2d8817ad797de66299d438dbf2ad8a9904ea774e758efd8c6bef47bafe51e391247d32acc92f5ee
|
data/ChangeLog.rdoc
CHANGED
data/lib/bindata/delayed_io.rb
CHANGED
@@ -116,19 +116,8 @@ module BinData
|
|
116
116
|
0
|
117
117
|
end
|
118
118
|
|
119
|
-
def eval_parameter_with_delayed_io(key, overrides = nil)
|
120
|
-
result = eval_parameter_without_delayed_io(key, overrides)
|
121
|
-
|
122
|
-
# Delay processing :onlyif until we do the actual read/write
|
123
|
-
result = true if key == :onlyif && ! result
|
124
|
-
|
125
|
-
result
|
126
|
-
end
|
127
|
-
alias_method :eval_parameter_without_delayed_io, :eval_parameter
|
128
|
-
alias_method :eval_parameter, :eval_parameter_with_delayed_io
|
129
|
-
|
130
119
|
def include_obj?
|
131
|
-
! has_parameter?(:onlyif) ||
|
120
|
+
! has_parameter?(:onlyif) || eval_parameter(:onlyif)
|
132
121
|
end
|
133
122
|
|
134
123
|
# DelayedIO objects aren't read when #read is called.
|
data/lib/bindata/struct.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'bindata/base'
|
2
|
+
require 'bindata/delayed_io'
|
2
3
|
|
3
4
|
module BinData
|
4
5
|
|
@@ -136,12 +137,12 @@ module BinData
|
|
136
137
|
|
137
138
|
def do_read(io) #:nodoc:
|
138
139
|
instantiate_all_objs
|
139
|
-
@field_objs.each { |f| f.do_read(io) if
|
140
|
+
@field_objs.each { |f| f.do_read(io) if include_obj_for_io?(f) }
|
140
141
|
end
|
141
142
|
|
142
143
|
def do_write(io) #:nodoc
|
143
144
|
instantiate_all_objs
|
144
|
-
@field_objs.each { |f| f.do_write(io) if
|
145
|
+
@field_objs.each { |f| f.do_write(io) if include_obj_for_io?(f) }
|
145
146
|
end
|
146
147
|
|
147
148
|
def do_num_bytes #:nodoc:
|
@@ -263,6 +264,12 @@ module BinData
|
|
263
264
|
end
|
264
265
|
end
|
265
266
|
|
267
|
+
def include_obj_for_io?(obj)
|
268
|
+
# Used by #do_read and #do_write, to ensure the stream is passed to
|
269
|
+
# DelayedIO objects for delayed processing.
|
270
|
+
include_obj?(obj) || DelayedIO === obj
|
271
|
+
end
|
272
|
+
|
266
273
|
def include_obj?(obj)
|
267
274
|
!obj.has_parameter?(:onlyif) || obj.eval_parameter(:onlyif)
|
268
275
|
end
|
data/lib/bindata/version.rb
CHANGED
data/test/delayed_io_test.rb
CHANGED
@@ -200,7 +200,7 @@ describe BinData::DelayedIO, "inside a Record with onlyif" do
|
|
200
200
|
it "reads" do
|
201
201
|
obj = DelayedIOOnlyIfRecord.read "\x01\x00\x03\x0012345"
|
202
202
|
obj.num_bytes.must_equal 1
|
203
|
-
obj.snapshot.must_equal({flag: 1, my_int1: 6
|
203
|
+
obj.snapshot.must_equal({flag: 1, my_int1: 6})
|
204
204
|
end
|
205
205
|
|
206
206
|
it "reads explicitly when flag is set" do
|
@@ -208,7 +208,7 @@ describe BinData::DelayedIO, "inside a Record with onlyif" do
|
|
208
208
|
obj.my_int1.read_now!
|
209
209
|
obj.my_int2.read_now!
|
210
210
|
obj.num_bytes.must_equal 1
|
211
|
-
obj.snapshot.must_equal({flag: 1, my_int1: 2
|
211
|
+
obj.snapshot.must_equal({flag: 1, my_int1: 2})
|
212
212
|
end
|
213
213
|
|
214
214
|
it "reads explicitly when flag is not set" do
|
@@ -216,7 +216,7 @@ describe BinData::DelayedIO, "inside a Record with onlyif" do
|
|
216
216
|
obj.my_int1.read_now!
|
217
217
|
obj.my_int2.read_now!
|
218
218
|
obj.num_bytes.must_equal 1
|
219
|
-
obj.snapshot.must_equal({flag: 0,
|
219
|
+
obj.snapshot.must_equal({flag: 0, my_int2: 1})
|
220
220
|
end
|
221
221
|
|
222
222
|
it "writes" do
|
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.
|
4
|
+
version: 2.4.12
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dion Mendel
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-10-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|