bindata 2.4.11 → 2.4.13
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/ChangeLog.rdoc +9 -0
- data/lib/bindata/delayed_io.rb +1 -12
- data/lib/bindata/params.rb +1 -1
- data/lib/bindata/struct.rb +9 -2
- data/lib/bindata/version.rb +1 -1
- data/test/delayed_io_test.rb +3 -3
- data/test/params_test.rb +1 -1
- 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: c61a762bd75b4589ee6d5c8c697807fdb245287c21e0319f9cbd1e0e8585ece2
|
4
|
+
data.tar.gz: b661382f73383acbb0ff04e994eddaa2e4fc1123e3a9ba22af021a6459859fa7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ac65193f123e330e7765638d018bed072acf74fc02bfb33a1c2adb4fa6aeb99c554cb3c5dde555f91bf59470fbb6b28f8ef85068c2752cc7761b78e3cea3429d
|
7
|
+
data.tar.gz: 5c7d8add3b48b6998c63eb09c26375d3327d3666606e0bc63c3b641d2965ff1cbc27248d911189db8d9f9c326e73e6df60733d819d7243956528baf45adcdda0
|
data/ChangeLog.rdoc
CHANGED
@@ -1,5 +1,14 @@
|
|
1
1
|
= BinData Changelog
|
2
2
|
|
3
|
+
== Version 2.4.13 (2022-10-16)
|
4
|
+
|
5
|
+
* Relax over-strict parameter naming requirements. Requested by
|
6
|
+
vinayak3qilabs.
|
7
|
+
|
8
|
+
== Version 2.4.12 (2022-10-03)
|
9
|
+
|
10
|
+
* Do not include DelayedIO objects when :onlyif is false.
|
11
|
+
|
3
12
|
== Version 2.4.11 (2022-09-27)
|
4
13
|
|
5
14
|
* Make DelayedIO work with :onlyif. Reported by Spencer McIntyre.
|
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/params.rb
CHANGED
@@ -116,7 +116,7 @@ module BinData
|
|
116
116
|
|
117
117
|
def self.invalid_parameter_names
|
118
118
|
@invalid_names ||= begin
|
119
|
-
all_names = LazyEvaluator.instance_methods(true)
|
119
|
+
all_names = LazyEvaluator.instance_methods(true)
|
120
120
|
allowed_names = [:name, :type]
|
121
121
|
invalid_names = (all_names - allowed_names).uniq
|
122
122
|
|
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
|
data/test/params_test.rb
CHANGED
@@ -7,7 +7,7 @@ describe BinData::Base, "parameters" do
|
|
7
7
|
it "fails when parameter name is invalid" do
|
8
8
|
lambda {
|
9
9
|
class InvalidParameterNameBase < BinData::Base
|
10
|
-
optional_parameter :
|
10
|
+
optional_parameter :lazy_eval # from LazyEvaluator
|
11
11
|
end
|
12
12
|
}.must_raise NameError
|
13
13
|
end
|
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.13
|
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-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|