range_list 1.3.0 → 1.3.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7ea59292d297f5583f7a9ceddaf8194cbd33704180c3e43f15fe87358c8d02d5
4
- data.tar.gz: f8ea601a80d2261c1b869aa57699bd0c71d048b4a94b25b978d67d1636d426b5
3
+ metadata.gz: bac3ba3fced62c57e3d3fafa0f1999667172d7083defe6ec6404ca8ecfb83af0
4
+ data.tar.gz: 12708960354b2930dd49ff8ee80e8b809340c8b8447953baac65351a914ad73b
5
5
  SHA512:
6
- metadata.gz: 52b7dd400bb94273b9e0ff1702db7d5bd328f88e425322ba3838cc859e4629f0f5f2776bcedec7f73ba90ca0936b8f661fd435bde89bf67bbfdede88c93f62b5
7
- data.tar.gz: af2aee3e2b4c37cdffbe89518423ea037b3348db50c9bfeff3b27259f6ff54f055265c3cbfb7c5ec7a9bc7410baa475e1d2f59be0259a5061b2e5197bd8e7280
6
+ metadata.gz: ebfdde12a2eca743326ffd44db017c23ff1ed796af325b4c0c0b1953cee76c427dd1a0ebf3d91e3a5674a2767332925881978292569fed01fca9ee30f5f55c28
7
+ data.tar.gz: dc711a4f3cf7a4157b11d9b0d7976f5411801f330daf7d501c427518434b3d3eb113f6d7aa3a65f019662bf230cf7f50f67b18266e4cc217ff3d6b2315d2c28b
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- range_list (1.3.0)
4
+ range_list (1.3.1)
5
5
  rbtree (~> 0.4.5)
6
6
 
7
7
  GEM
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class RangeList
4
- VERSION = "1.3.0"
4
+ VERSION = "1.3.1"
5
5
  end
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
- raise ArgumentError, "`element` should be `Integer` type." unless element.is_a?(Integer)
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
- to_a.inspect
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
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: range_list
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.0
4
+ version: 1.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Song Huang