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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a8da7873dc256b291c991e6577d886a78ba27b347b6ef03dd55b7d23ae797611
4
- data.tar.gz: c44844d397e1d1c8a332c99bc16f18a64a979f8251ce3dc2e71246882e40f10c
3
+ metadata.gz: 3688cea66b3a68f7f45ecd4b89b632e9e4438ee40ff4f59c57bbe0a68130e7d6
4
+ data.tar.gz: 647a570fd024d8938297d2fb4d2ac0123d03befaf0e5d3441627601d86694d8f
5
5
  SHA512:
6
- metadata.gz: 391299bd3e2f04892a42b1fffabd7e494872f4085d2bef50f6e37b267a7e496ecd61081cd838550d87e5702dcefc8ed63c76446fa72ba02a52e1b60cb13a941a
7
- data.tar.gz: ebf86b0c30ceea48215d9beaa39706c9fed31b2b1da788b2c9ddaf1d861ac4ff33a27b7a3211d6e097e077da8625ef6ad2d21a40a6dc9232bc88ec8ad39a0143
6
+ metadata.gz: ddb2cd1156f3200fcc1bcce2d1a0bf5554f52babd692652debb71a8b56a9dced9c0f76db22884599f475b91d549f915344fcc1ec71a7f28be8dcb87192c968a5
7
+ data.tar.gz: ea223714bb2753b3b5dd626711dbffdc328ed326d2218a5ef2d8817ad797de66299d438dbf2ad8a9904ea774e758efd8c6bef47bafe51e391247d32acc92f5ee
data/ChangeLog.rdoc CHANGED
@@ -1,5 +1,9 @@
1
1
  = BinData Changelog
2
2
 
3
+ == Version 2.4.12 (2022-10-03)
4
+
5
+ * Do not include DelayedIO objects when :onlyif is false.
6
+
3
7
  == Version 2.4.11 (2022-09-27)
4
8
 
5
9
  * Make DelayedIO work with :onlyif. Reported by Spencer McIntyre.
@@ -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) || eval_parameter_without_delayed_io(:onlyif)
120
+ ! has_parameter?(:onlyif) || eval_parameter(:onlyif)
132
121
  end
133
122
 
134
123
  # DelayedIO objects aren't read when #read is called.
@@ -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 include_obj?(f) }
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 include_obj?(f) }
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
@@ -1,3 +1,3 @@
1
1
  module BinData
2
- VERSION = "2.4.11"
2
+ VERSION = "2.4.12"
3
3
  end
@@ -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, my_int2: 7})
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, my_int2: 7})
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, my_int1: 6, my_int2: 1})
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.11
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-09-27 00:00:00.000000000 Z
11
+ date: 2022-10-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake