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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c2ef851831406ab98e7b1e6f61f7a1d17dba05d0
4
- data.tar.gz: 968ef3f0967f7ebef2e1966feb7b60cbfb97ad2f
3
+ metadata.gz: 51dd820f1753f2caac54b95fe4cdc9b231edc550
4
+ data.tar.gz: dc1416a3d1efbd7fc04c5c6fe648990de4aa3c9c
5
5
  SHA512:
6
- metadata.gz: d369094a12515dba67e051057c1ec9f09242b9c935e8224a8c5af836937555e815eecd6001793108a6bc19bbd20f6e637b894789c30b3089f4da4c401231d31a
7
- data.tar.gz: 138af7c1155d6c9572b9fd299f84604d288d1238df417356149a9a87819305957b92c7084aa82a058a4a421d91dda61b135a4c8ba902c6b96fb74d88b5ee8edd
6
+ metadata.gz: 5ffb51edc36a0a400b8e547f77e1741f41975533ecd74560f0e04946a839aa0073e28c33246a9ff66a59ca4bc00a63da1796b6c8bd320778df57afa49568912e
7
+ data.tar.gz: f38d3f138965f2117e570765e0759ff43582db792a43ff0151aeb7f3a58618b53991cc511e2763dcd3a3cdd80246c420231e017d561d3056303a31b4398511eb
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- interval_set (0.1.1)
4
+ interval_set (0.2.0)
5
5
  treemap-fork (~> 1.0, >= 1.0.4.2)
6
6
 
7
7
  GEM
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
- # @param range_map [TreeMap] a TreeMap of ranges. For internal use only.
28
- def initialize(range_map = TreeMap.new)
29
- unless range_map.instance_of?(TreeMap) || range_map.instance_of?(TreeMap::BoundedMap)
30
- raise ArgumentError.new("invalid range_map #{range_map}")
31
- end
27
+ def initialize
28
+ @range_map = TreeMap.new
29
+ end
32
30
 
33
- @range_map = range_map
31
+ def marshal_dump
32
+ to_a
33
+ end
34
34
 
35
- update_bounds
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.new(sub_map)
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.new(head_map)
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.new(tail_map)
749
+ IntervalSet.allocate.initialize_with_range_map(tail_map)
742
750
  end
743
751
 
744
752
  def add_range(range)
@@ -1,3 +1,3 @@
1
1
  class IntervalSet
2
- VERSION = '0.1.1'
2
+ VERSION = '0.2.0'
3
3
  end
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.1.1
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-13 00:00:00.000000000 Z
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.12
116
+ rubygems_version: 2.6.14
117
117
  signing_key:
118
118
  specification_version: 4
119
119
  summary: Set of sorted non-overlapping ranges