bindata 2.4.11 → 2.4.12
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 +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
|