range_list_rb 0.2.0 → 0.3.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 279924926180cea40ac46209691189d10dc0e0957c2277d95974d9f48881e929
4
- data.tar.gz: 0e675975de6bbcf768bfbeb217c947d3ab1d0202663736673882945f0580bef8
3
+ metadata.gz: f93f099a2daaaff284990bc03538af591aa032f89e7c1b29272852c331af7be6
4
+ data.tar.gz: 7034dbf55885ca9e9199c0d27feae6cb33452e8873cf661c3ff8917f64d23ad4
5
5
  SHA512:
6
- metadata.gz: a09f8b1b8957df0a8d486e9805355915e81cfbf9a1401b97b5cde31845b4330b3ec29ee2a4aa582e03361938f6355e296b76d7b78e4bc2dbd36b7b9300ed9a1e
7
- data.tar.gz: 42494b7ec55a7c8d800d7e8263b8a4c55ffd894e61e79fbee0a8616f371fcf422d4542acc0a0deb441058580fd9da236f39e79aed85bb7b265da2e1e9f0ad479
6
+ metadata.gz: e0eceb523ce1443c73a0f22e0e7a482c9333946fbd12141e984c47a88d14c02c531b7d2f6093867f96f35e1ba1651b216e487c091f825fcb674a3ded56af2fab
7
+ data.tar.gz: 8ff18c72a3e03c28d0cdb24a2b1751fd209ee42139284ed124103df9c75c550635219204ad15cedf88043d1a652ebbf25d0c01d14ac61e1f967a156c0580167c
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- range_list_rb (0.2.0)
4
+ range_list_rb (0.3.0)
5
5
  rbtree (~> 0.4.5)
6
6
 
7
7
  GEM
data/README.md CHANGED
@@ -9,11 +9,11 @@ A range list is an aggregate of these ranges: [1, 5), [10, 11), [100, 201).
9
9
 
10
10
  Install the gem and add to the application's Gemfile by executing:
11
11
 
12
- $ bundle add range_list
12
+ $ bundle add range_list_rb
13
13
 
14
14
  If bundler is not being used to manage dependencies, install the gem by executing:
15
15
 
16
- $ gem install range_list
16
+ $ gem install range_list_rb
17
17
 
18
18
  ## Usage
19
19
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class RangeList
4
- VERSION = "0.2.0"
4
+ VERSION = "0.3.0"
5
5
  end
data/lib/range_list.rb CHANGED
@@ -81,6 +81,17 @@ class RangeList
81
81
  Kernel.print to_s
82
82
  end
83
83
 
84
+ # Returns true if range list contains input element, or false if not contains.
85
+ # @param element [Integer]
86
+ # @return [Boolean]
87
+ # @raise [IllegalArgumentError] when element is invalid
88
+ def contains?(element)
89
+ validate_element!(element)
90
+
91
+ floor_range = @tree_map.floor_entry(element)
92
+ !floor_range.nil? && floor_range[1] > element
93
+ end
94
+
84
95
  def each(&block)
85
96
  @tree_map.each(&block)
86
97
  end
@@ -105,4 +116,9 @@ class RangeList
105
116
  def validate_empty_range?(range)
106
117
  range[0] >= range[1]
107
118
  end
119
+
120
+ def validate_element!(element)
121
+ raise IllegalArgumentError, "element cannot be nil" if element.nil?
122
+ raise IllegalArgumentError, "element must be Integer type" unless element.is_a?(Integer)
123
+ end
108
124
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: range_list_rb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - songzheng
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-05-07 00:00:00.000000000 Z
11
+ date: 2022-05-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rbtree