range_utils 1.0.0 → 1.1.0
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/README.md +6 -1
- data/Rakefile +2 -2
- data/lib/range_utils.rb +11 -1
- data/range_utils.gemspec +59 -0
- data/spec/range_utils_spec.rb +13 -0
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3c29b94d801585958a9838998e968c88685af5c2
|
4
|
+
data.tar.gz: 0f2df5d19f9a96541ec539af239424a4ad147ce4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bf6651003f4cc15e932f99f9744fa7a5c4e6050c54965ef914dd7edd116ea659fb9c4877b31952794f8d1210bfa95d299b7c307b91f17a3f0c5d880a7a4312da
|
7
|
+
data.tar.gz: 83f1e046df43c7e002e860ead4a3e79c5a28da97c8e4f8ab6483966daf56ce9f1c07f9c37f58e5a70b951da65f8ac504f1df7e44018de97af2a811c5a05c116b
|
data/README.md
CHANGED
@@ -13,7 +13,12 @@ Combine consecutive Range objects:
|
|
13
13
|
|
14
14
|
Get the range for a given size of the collection:
|
15
15
|
|
16
|
-
RangeUtils.
|
16
|
+
RangeUtils.range_for_size_of(14) #=> 0..13
|
17
|
+
|
18
|
+
or get the size from a Range:
|
19
|
+
|
20
|
+
RangeUtils.size_from_range(0..0) #=> 1
|
21
|
+
RangeUtils.size_from_range(12..123) #=> 112
|
17
22
|
|
18
23
|
Get the Ranges of maximum size for a given number of elements:
|
19
24
|
|
data/Rakefile
CHANGED
@@ -20,8 +20,8 @@ Jeweler::Tasks.new do |gem|
|
|
20
20
|
gem.name = "range_utils"
|
21
21
|
gem.homepage = "http://github.com/julik/range_utils"
|
22
22
|
gem.license = "MIT"
|
23
|
-
gem.
|
24
|
-
gem.
|
23
|
+
gem.description = %Q{There is a whole range of things you can do with a Range}
|
24
|
+
gem.summary = %Q{Range splice, split and other niceties}
|
25
25
|
gem.email = "me@julik.nl"
|
26
26
|
gem.authors = ["Julik Tarkhanov"]
|
27
27
|
# dependencies defined in Gemfile
|
data/lib/range_utils.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
module RangeUtils
|
2
|
-
VERSION = '1.
|
2
|
+
VERSION = '1.1.0'
|
3
3
|
|
4
4
|
# Tells whether the +item+ is included in the +range+, without enumerating
|
5
5
|
# through the +range+ (performing a quick bounds check).
|
@@ -82,6 +82,16 @@ module RangeUtils
|
|
82
82
|
end
|
83
83
|
end
|
84
84
|
|
85
|
+
# Returns the number of members of the given Range.
|
86
|
+
# size_from_range(0..0) #=> 1
|
87
|
+
# size_from_range(12..123) #=> 112
|
88
|
+
# Range members must support aruthmetic with integers.
|
89
|
+
def size_from_range(range)
|
90
|
+
size = range.end - range.begin + 1
|
91
|
+
raise ArgumentError, "The resulting size for range #{range} is negative" if size < 0
|
92
|
+
size
|
93
|
+
end
|
94
|
+
|
85
95
|
alias_method :http_ranges_for_size, :ranges_of_offfsets_for_size
|
86
96
|
extend self
|
87
97
|
end
|
data/range_utils.gemspec
ADDED
@@ -0,0 +1,59 @@
|
|
1
|
+
# Generated by jeweler
|
2
|
+
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
|
+
# -*- encoding: utf-8 -*-
|
5
|
+
# stub: range_utils 1.1.0 ruby lib
|
6
|
+
|
7
|
+
Gem::Specification.new do |s|
|
8
|
+
s.name = "range_utils"
|
9
|
+
s.version = "1.1.0"
|
10
|
+
|
11
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
12
|
+
s.require_paths = ["lib"]
|
13
|
+
s.authors = ["Julik Tarkhanov"]
|
14
|
+
s.date = "2015-06-10"
|
15
|
+
s.description = "There is a whole range of things you can do with a Range"
|
16
|
+
s.email = "me@julik.nl"
|
17
|
+
s.extra_rdoc_files = [
|
18
|
+
"LICENSE.txt",
|
19
|
+
"README.md"
|
20
|
+
]
|
21
|
+
s.files = [
|
22
|
+
".document",
|
23
|
+
".rspec",
|
24
|
+
".travis.yml",
|
25
|
+
"Gemfile",
|
26
|
+
"LICENSE.txt",
|
27
|
+
"README.md",
|
28
|
+
"Rakefile",
|
29
|
+
"lib/range_utils.rb",
|
30
|
+
"range_utils.gemspec",
|
31
|
+
"spec/range_utils_spec.rb"
|
32
|
+
]
|
33
|
+
s.homepage = "http://github.com/julik/range_utils"
|
34
|
+
s.licenses = ["MIT"]
|
35
|
+
s.rubygems_version = "2.2.2"
|
36
|
+
s.summary = "Range splice, split and other niceties"
|
37
|
+
|
38
|
+
if s.respond_to? :specification_version then
|
39
|
+
s.specification_version = 4
|
40
|
+
|
41
|
+
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
42
|
+
s.add_development_dependency(%q<rspec>, ["~> 3.0"])
|
43
|
+
s.add_development_dependency(%q<rdoc>, ["~> 3.12"])
|
44
|
+
s.add_development_dependency(%q<bundler>, ["~> 1.0"])
|
45
|
+
s.add_development_dependency(%q<jeweler>, ["~> 2.0.1"])
|
46
|
+
else
|
47
|
+
s.add_dependency(%q<rspec>, ["~> 3.0"])
|
48
|
+
s.add_dependency(%q<rdoc>, ["~> 3.12"])
|
49
|
+
s.add_dependency(%q<bundler>, ["~> 1.0"])
|
50
|
+
s.add_dependency(%q<jeweler>, ["~> 2.0.1"])
|
51
|
+
end
|
52
|
+
else
|
53
|
+
s.add_dependency(%q<rspec>, ["~> 3.0"])
|
54
|
+
s.add_dependency(%q<rdoc>, ["~> 3.12"])
|
55
|
+
s.add_dependency(%q<bundler>, ["~> 1.0"])
|
56
|
+
s.add_dependency(%q<jeweler>, ["~> 2.0.1"])
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
data/spec/range_utils_spec.rb
CHANGED
@@ -122,4 +122,17 @@ describe "RangeUtils" do
|
|
122
122
|
expect(subject.http_ranges_for_size(785, 324)).to eq([0..323, 324..647, 648..784])
|
123
123
|
end
|
124
124
|
end
|
125
|
+
|
126
|
+
context '.size_from_range' do
|
127
|
+
it 'raises an ArgumentError when the range goes into negative' do
|
128
|
+
expect{
|
129
|
+
subject.size_from_range(0..-15)
|
130
|
+
}.to raise_error(ArgumentError, 'The resulting size for range 0..-15 is negative')
|
131
|
+
end
|
132
|
+
|
133
|
+
it 'computes the right size from the given Range' do
|
134
|
+
expect(subject.size_from_range(0..522753)).to eq(522754)
|
135
|
+
end
|
136
|
+
end
|
137
|
+
|
125
138
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: range_utils
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Julik Tarkhanov
|
@@ -66,7 +66,7 @@ dependencies:
|
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: 2.0.1
|
69
|
-
description:
|
69
|
+
description: There is a whole range of things you can do with a Range
|
70
70
|
email: me@julik.nl
|
71
71
|
executables: []
|
72
72
|
extensions: []
|
@@ -82,6 +82,7 @@ files:
|
|
82
82
|
- README.md
|
83
83
|
- Rakefile
|
84
84
|
- lib/range_utils.rb
|
85
|
+
- range_utils.gemspec
|
85
86
|
- spec/range_utils_spec.rb
|
86
87
|
homepage: http://github.com/julik/range_utils
|
87
88
|
licenses:
|
@@ -106,5 +107,5 @@ rubyforge_project:
|
|
106
107
|
rubygems_version: 2.2.2
|
107
108
|
signing_key:
|
108
109
|
specification_version: 4
|
109
|
-
summary:
|
110
|
+
summary: Range splice, split and other niceties
|
110
111
|
test_files: []
|