range_list 1.3.0 → 1.3.1
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/Gemfile.lock +1 -1
- data/lib/range_list/version.rb +1 -1
- data/lib/range_list.rb +12 -11
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bac3ba3fced62c57e3d3fafa0f1999667172d7083defe6ec6404ca8ecfb83af0
|
4
|
+
data.tar.gz: 12708960354b2930dd49ff8ee80e8b809340c8b8447953baac65351a914ad73b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ebfdde12a2eca743326ffd44db017c23ff1ed796af325b4c0c0b1953cee76c427dd1a0ebf3d91e3a5674a2767332925881978292569fed01fca9ee30f5f55c28
|
7
|
+
data.tar.gz: dc711a4f3cf7a4157b11d9b0d7976f5411801f330daf7d501c427518434b3d3eb113f6d7aa3a65f019662bf230cf7f50f67b18266e4cc217ff3d6b2315d2c28b
|
data/Gemfile.lock
CHANGED
data/lib/range_list/version.rb
CHANGED
data/lib/range_list.rb
CHANGED
@@ -1,6 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require_relative "range_list/version"
|
4
3
|
require_relative "range_list/errors"
|
5
4
|
require_relative "range_list/avl_tree/rbtree_adapter"
|
6
5
|
|
@@ -18,8 +17,6 @@ class RangeList
|
|
18
17
|
# @raise [ArgumentError] when argement invalid
|
19
18
|
def add(range)
|
20
19
|
validate_range!(range)
|
21
|
-
|
22
|
-
# Return when range is empty.
|
23
20
|
return self if empty_range?(range)
|
24
21
|
|
25
22
|
# Get real range start.
|
@@ -54,8 +51,6 @@ class RangeList
|
|
54
51
|
# @raise (see #add)
|
55
52
|
def remove(range)
|
56
53
|
validate_range!(range)
|
57
|
-
|
58
|
-
# Return when range is empty.
|
59
54
|
return self if empty_range?(range)
|
60
55
|
|
61
56
|
# Insert end lower range, `-1` means not include.
|
@@ -91,8 +86,6 @@ class RangeList
|
|
91
86
|
# @raise (see #add)
|
92
87
|
def contains_all?(range)
|
93
88
|
validate_range!(range)
|
94
|
-
|
95
|
-
# Return false when range is empty.
|
96
89
|
return false if empty_range?(range)
|
97
90
|
|
98
91
|
start_lower_range = avl_tree.lower_entry(range[0])
|
@@ -106,8 +99,6 @@ class RangeList
|
|
106
99
|
# @raise (see #add)
|
107
100
|
def contains_any?(range)
|
108
101
|
validate_range!(range)
|
109
|
-
|
110
|
-
# Return false when range is empty.
|
111
102
|
return false if empty_range?(range)
|
112
103
|
|
113
104
|
# `-1` means not include.
|
@@ -120,17 +111,19 @@ class RangeList
|
|
120
111
|
# @return [Boolean]
|
121
112
|
# @raise (see #add)
|
122
113
|
def contains?(element)
|
123
|
-
|
114
|
+
validate_element!(element)
|
124
115
|
|
125
116
|
lower_entry = avl_tree.lower_entry(element)
|
126
117
|
!lower_entry.nil? && lower_entry[1] > element
|
127
118
|
end
|
128
119
|
|
129
120
|
# Give RangeList iterative ability.
|
121
|
+
# @return [RangeList, Enumerator]
|
130
122
|
# @yield [range_start, range_end] give the range element to the block
|
131
123
|
def each(&block)
|
132
124
|
if block
|
133
125
|
avl_tree.each(&block)
|
126
|
+
self
|
134
127
|
else
|
135
128
|
enum_for(:each)
|
136
129
|
end
|
@@ -138,9 +131,13 @@ class RangeList
|
|
138
131
|
|
139
132
|
# @!visibility private
|
140
133
|
def inspect
|
141
|
-
|
134
|
+
data = map { |k, v| "[#{k}, #{v})" }.join(", ")
|
135
|
+
"[#{data}]"
|
142
136
|
end
|
143
137
|
|
138
|
+
# @!visibility private
|
139
|
+
alias_method :to_s, :inspect
|
140
|
+
|
144
141
|
private
|
145
142
|
|
146
143
|
attr_reader :avl_tree
|
@@ -151,6 +148,10 @@ class RangeList
|
|
151
148
|
raise ArgumentError, "All elements of `range` should be `Integer`." unless range.all? { |item| item.is_a?(Integer) }
|
152
149
|
end
|
153
150
|
|
151
|
+
def validate_element!(element)
|
152
|
+
raise ArgumentError, "`element` should be `Integer` type." unless element.is_a?(Integer)
|
153
|
+
end
|
154
|
+
|
154
155
|
def empty_range?(range)
|
155
156
|
range[0] >= range[1]
|
156
157
|
end
|