interval_set 0.1.1 → 0.2.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/Gemfile.lock +1 -1
- data/lib/interval_set.rb +18 -10
- data/lib/interval_set/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 51dd820f1753f2caac54b95fe4cdc9b231edc550
|
4
|
+
data.tar.gz: dc1416a3d1efbd7fc04c5c6fe648990de4aa3c9c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5ffb51edc36a0a400b8e547f77e1741f41975533ecd74560f0e04946a839aa0073e28c33246a9ff66a59ca4bc00a63da1796b6c8bd320778df57afa49568912e
|
7
|
+
data.tar.gz: f38d3f138965f2117e570765e0759ff43582db792a43ff0151aeb7f3a58618b53991cc511e2763dcd3a3cdd80246c420231e017d561d3056303a31b4398511eb
|
data/Gemfile.lock
CHANGED
data/lib/interval_set.rb
CHANGED
@@ -24,15 +24,17 @@ class IntervalSet
|
|
24
24
|
end
|
25
25
|
|
26
26
|
# Returns an empty instance of IntervalSet.
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
raise ArgumentError.new("invalid range_map #{range_map}")
|
31
|
-
end
|
27
|
+
def initialize
|
28
|
+
@range_map = TreeMap.new
|
29
|
+
end
|
32
30
|
|
33
|
-
|
31
|
+
def marshal_dump
|
32
|
+
to_a
|
33
|
+
end
|
34
34
|
|
35
|
-
|
35
|
+
def marshal_load(ranges)
|
36
|
+
initialize
|
37
|
+
ranges.each {|range| add(range)}
|
36
38
|
end
|
37
39
|
|
38
40
|
# Returns +true+ if this IntervalSet contains no ranges.
|
@@ -642,6 +644,12 @@ class IntervalSet
|
|
642
644
|
|
643
645
|
protected
|
644
646
|
|
647
|
+
def initialize_with_range_map(range_map)
|
648
|
+
@range_map = range_map
|
649
|
+
update_bounds
|
650
|
+
self
|
651
|
+
end
|
652
|
+
|
645
653
|
def range_map
|
646
654
|
@range_map
|
647
655
|
end
|
@@ -719,13 +727,13 @@ class IntervalSet
|
|
719
727
|
bound_min = include_left ? left_entry.value.first : range.first
|
720
728
|
sub_map = @range_map.sub_map(bound_min, range.last)
|
721
729
|
|
722
|
-
IntervalSet.
|
730
|
+
IntervalSet.allocate.initialize_with_range_map(sub_map)
|
723
731
|
end
|
724
732
|
|
725
733
|
def head_set(value)
|
726
734
|
head_map = @range_map.head_map(value)
|
727
735
|
|
728
|
-
IntervalSet.
|
736
|
+
IntervalSet.allocate.initialize_with_range_map(head_map)
|
729
737
|
end
|
730
738
|
|
731
739
|
def tail_set(value)
|
@@ -738,7 +746,7 @@ class IntervalSet
|
|
738
746
|
bound_min = include_left ? left_entry.value.first : value
|
739
747
|
tail_map = @range_map.tail_map(bound_min)
|
740
748
|
|
741
|
-
IntervalSet.
|
749
|
+
IntervalSet.allocate.initialize_with_range_map(tail_map)
|
742
750
|
end
|
743
751
|
|
744
752
|
def add_range(range)
|
data/lib/interval_set/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: interval_set
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Rico Jasper
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-12-
|
11
|
+
date: 2017-12-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -113,7 +113,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
113
113
|
version: '0'
|
114
114
|
requirements: []
|
115
115
|
rubyforge_project:
|
116
|
-
rubygems_version: 2.6.
|
116
|
+
rubygems_version: 2.6.14
|
117
117
|
signing_key:
|
118
118
|
specification_version: 4
|
119
119
|
summary: Set of sorted non-overlapping ranges
|