multi_range 1.0.0 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +8 -1
- data/README.md +6 -6
- data/lib/multi_range.rb +3 -3
- data/lib/multi_range/version.rb +1 -1
- 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: 282c94c92ba01c11fb4e1efb2adc24ebe368d466660bd741878023bd1fb9c857
|
4
|
+
data.tar.gz: 2eb44495bac41d991ad6c29049b8f97395c848401e00ea96161ea0d101bb78ed
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1c6bda5d61296f7aaf9dbb743477119b01a037be1085a7df85178340c97096fb8629b7cf384f4163d55177cd20be12b28b04b9fb48240c85dd6d5f5495612984
|
7
|
+
data.tar.gz: f23bf8796b02954a7b4724bf96b9bbe6779e284b70a563e4042996c97a62387125d120be5f6b1a451b1c7f982a20395774e7067544b4e7cb591785f096d49c4e
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,12 @@
|
|
1
1
|
## Change Log
|
2
2
|
|
3
|
+
### [v1.0.0](https://github.com/khiav223577/multi_range/compare/v0.0.4...v1.0.0) 2020/10/15
|
4
|
+
- [#12](https://github.com/khiav223577/multi_range/pull/12) Implement #overlaps? (@khiav223577)
|
5
|
+
- [#11](https://github.com/khiav223577/multi_range/pull/11) Support difference other multi_range object (@khiav223577)
|
6
|
+
- [#10](https://github.com/khiav223577/multi_range/pull/10) Add frozen_string_literal (@khiav223577)
|
7
|
+
- [#9](https://github.com/khiav223577/multi_range/pull/9) Implement range union (@khiav223577)
|
8
|
+
- [#8](https://github.com/khiav223577/multi_range/pull/8) Support initializing a MultiRange object with unsorted ranges (@khiav223577)
|
9
|
+
|
3
10
|
### [v0.0.4](https://github.com/khiav223577/multi_range/compare/v0.0.3...v0.0.4) 2020/03/26
|
4
11
|
- [#7](https://github.com/khiav223577/multi_range/pull/7) Add flatten method (@khiav223577)
|
5
12
|
|
@@ -11,6 +18,6 @@
|
|
11
18
|
- [#4](https://github.com/khiav223577/multi_range/pull/4) Add each, map, index_with methods (@khiav223577)
|
12
19
|
- [#3](https://github.com/khiav223577/multi_range/pull/3) Support passing integer as range (@khiav223577)
|
13
20
|
|
14
|
-
### v0.0.1 2020/03/01
|
21
|
+
### [v0.0.1](https://github.com/khiav223577/multi_range/compare/v0.0.1...v0.0.1) 2020/03/01
|
15
22
|
- [#2](https://github.com/khiav223577/multi_range/pull/2) Support Ruby 1.8.7 (@khiav223577)
|
16
23
|
- [#1](https://github.com/khiav223577/multi_range/pull/1) Implement MultiRange (@khiav223577)
|
data/README.md
CHANGED
@@ -75,7 +75,7 @@ multi_range.ranges
|
|
75
75
|
### Flatten
|
76
76
|
```rb
|
77
77
|
multi_range = MultiRange.new([1, 2, 4..6, 7, 8..12])
|
78
|
-
multi_range.
|
78
|
+
multi_range.merge_overlaps.ranges
|
79
79
|
# => [1..2, 4..12]
|
80
80
|
```
|
81
81
|
|
@@ -147,13 +147,13 @@ MultiRange.new([1..3, 6, 8..9]).size
|
|
147
147
|
### Warning
|
148
148
|
|
149
149
|
The return value may be different when there are some overlapped ranges.
|
150
|
-
Call `
|
150
|
+
Call `merge_overlaps` if you want to merge overlapped ranges.
|
151
151
|
|
152
152
|
```rb
|
153
153
|
MultiRange.new([1..5, 3..6]).to_a
|
154
154
|
# => [1, 2, 3, 4, 5, 3, 4, 5, 6]
|
155
155
|
|
156
|
-
MultiRange.new([1..5, 3..6]).
|
156
|
+
MultiRange.new([1..5, 3..6]).merge_overlaps.to_a
|
157
157
|
# => [1, 2, 3, 4, 5, 6]
|
158
158
|
```
|
159
159
|
|
@@ -161,7 +161,7 @@ MultiRange.new([1..5, 3..6]).flatten.to_a
|
|
161
161
|
MultiRange.new([1..5, 3..6]).each{|s| print s }
|
162
162
|
# => 123453456
|
163
163
|
|
164
|
-
MultiRange.new([1..5, 3..6]).
|
164
|
+
MultiRange.new([1..5, 3..6]).merge_overlaps.each{|s| print s }
|
165
165
|
# => 123456
|
166
166
|
```
|
167
167
|
|
@@ -169,7 +169,7 @@ MultiRange.new([1..5, 3..6]).flatten.each{|s| print s }
|
|
169
169
|
MultiRange.new([1..5, 3..6]).map{|s| s * 2 }
|
170
170
|
# => [2, 4, 6, 8, 10, 6, 8, 10, 12]
|
171
171
|
|
172
|
-
MultiRange.new([1..5, 3..6]).
|
172
|
+
MultiRange.new([1..5, 3..6]).merge_overlaps.map{|s| s * 2 }
|
173
173
|
# => [2, 4, 6, 8, 10, 12]
|
174
174
|
```
|
175
175
|
|
@@ -177,7 +177,7 @@ MultiRange.new([1..5, 3..6]).flatten.map{|s| s * 2 }
|
|
177
177
|
MultiRange.new([1..5, 3..6]).size
|
178
178
|
# => 9
|
179
179
|
|
180
|
-
MultiRange.new([1..5, 3..6]).
|
180
|
+
MultiRange.new([1..5, 3..6]).merge_overlaps.size
|
181
181
|
# => 6
|
182
182
|
```
|
183
183
|
|
data/lib/multi_range.rb
CHANGED
@@ -25,7 +25,7 @@ class MultiRange
|
|
25
25
|
@ranges = ranges.map{|s| s.is_a?(Integer) ? s..s : s }.sort_by(&:begin).freeze
|
26
26
|
end
|
27
27
|
|
28
|
-
def
|
28
|
+
def merge_overlaps
|
29
29
|
return MultiRange.new([]) if @ranges.size == 0
|
30
30
|
|
31
31
|
new_ranges = []
|
@@ -82,11 +82,11 @@ class MultiRange
|
|
82
82
|
|
83
83
|
def |(other)
|
84
84
|
other_ranges = other.is_a?(MultiRange) ? other.ranges : [other]
|
85
|
-
return MultiRange.new(@ranges + other_ranges).
|
85
|
+
return MultiRange.new(@ranges + other_ranges).merge_overlaps
|
86
86
|
end
|
87
87
|
|
88
88
|
def overlaps?(other)
|
89
|
-
multi_range =
|
89
|
+
multi_range = merge_overlaps
|
90
90
|
return multi_range.size != (multi_range - other).size
|
91
91
|
end
|
92
92
|
|
data/lib/multi_range/version.rb
CHANGED