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