interval_response 0.1.1 → 0.1.2

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6a1259c27fcc823bb621b20422ba45cfcac2a84148ac5dd001dc9b91fa0a84fd
4
- data.tar.gz: 8e8b15f34a42842ccb67f60c4d44ce518eb55713a1325357bb3c7f156ad6d4bd
3
+ metadata.gz: a4a58f786564c16dc9c4816023274cabe9d88d82580bf3dae0775fd866a2b4a6
4
+ data.tar.gz: f02c691b995400f9ac06a2a815584d82499101b4ca0f98dfc6afc39fd4cc5aa2
5
5
  SHA512:
6
- metadata.gz: 32522c1ea4f84a9f697c5fbef9437975c0bccd0e1ab8da912a74d5a2bb7a723c4deae3ff70ba769cb3c754e83b4482df8f1ecb7e25ac52f054a89318869e24e1
7
- data.tar.gz: 2538c43fcd2d3106b78d45380d0c1a5ed6814deed709d37c203923e9040eaea9cb22c9283998ec2ee2fdb06ae3b7e48ab6b74ba7ac2dd342a62d633202184692
6
+ metadata.gz: f7864a9e443a55bea621b01bf01eb72923de2e3cbb5dec682f0422224fead3b5ae2248c9daae62fde1c0c129a5ed67383e0d7e0259a2733674a9feba70e51c0b
7
+ data.tar.gz: 787ec5389f5d958aded3bc8ae1217ebee51da2a6dad327c88150aeeaad9282560324337a4c6b753d49207fad3319580ed9c402f95f8ec649666738b55d6e58bf
@@ -18,13 +18,19 @@ class IntervalResponse::Sequence
18
18
  end
19
19
 
20
20
  def <<(segment)
21
- return self if segment.size == 0
22
21
  segment_size_or_bytesize = segment.respond_to?(:bytesize) ? segment.bytesize : segment.size
23
- @intervals << Interval.new(segment, segment_size_or_bytesize, @size, @intervals.length)
24
- @size += segment.size
22
+ return self if segment_size_or_bytesize == 0
23
+
24
+ add_segment(segment, size: segment_size_or_bytesize)
25
+ self
25
26
  self
26
27
  end
27
28
 
29
+ def add_segment(segment, size:)
30
+ @intervals << Interval.new(segment, size, @size, @intervals.length)
31
+ @size += size
32
+ end
33
+
28
34
  def each_in_range(from_range_in_resource)
29
35
  # Skip empty ranges
30
36
  requested_range_size = (from_range_in_resource.end - from_range_in_resource.begin) + 1
@@ -1,3 +1,3 @@
1
1
  module IntervalResponse
2
- VERSION = "0.1.1"
2
+ VERSION = "0.1.2"
3
3
  end
@@ -40,6 +40,14 @@ RSpec.describe IntervalResponse::Sequence do
40
40
  expect(etag_for_sequence.bytesize).to be > 8
41
41
  end
42
42
 
43
+ it 'accepts objects that only respond to #bytesize and not #size' do
44
+ a = double(:a, bytesize: 6)
45
+ b = double(:b, bytesize: 12)
46
+ c = double(:c, bytesize: 17)
47
+ seq = described_class.new(a, b, c)
48
+ expect(seq.size).to eq(6 + 12 + 17)
49
+ end
50
+
43
51
  it 'generates the ETag dependent on the sequence composition' do
44
52
  a = double(:a, size: 6)
45
53
  b = double(:b, size: 12)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: interval_response
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Julik Tarkhanov
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-09-25 00:00:00.000000000 Z
11
+ date: 2019-12-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rack