Module: RegexForRange
- Defined in:
- lib/regex_for_range.rb,
lib/regex_for_range/util.rb,
lib/regex_for_range/range.rb,
lib/regex_for_range/version.rb
Defined Under Namespace
Modules: Util
Classes: Range
Constant Summary
collapse
- VERSION =
"0.1.2"
Class Method Summary
collapse
Class Method Details
.get_regex_for_range(first, last) ⇒ Object
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
# File 'lib/regex_for_range.rb', line 8
def get_regex_for_range(first, last)
left = left_bounds(first, last)
last_left = left.delete_at(left.length - 1)
right = right_bounds(last_left.first, last)
first_right = right.delete_at(0)
merged = []
merged += left
if !last_left.overlaps(first_right)
merged.push(last_left)
merged.push(first_right)
else
merged.push(RegexForRange::Util.join(last_left, first_right))
end
merged += right
return RegexForRange::Util.join_regex_by_or(merged)
end
|
.left_bounds(first, last) ⇒ Object
31
32
33
34
35
36
37
38
39
40
41
42
|
# File 'lib/regex_for_range.rb', line 31
def left_bounds(first, last)
results = []
while last > first
range = RegexForRange::Util.from_start(first)
results.push(range)
first = range.last + 1
end
return results
end
|
.right_bounds(first, last) ⇒ Object
44
45
46
47
48
49
50
51
52
53
54
|
# File 'lib/regex_for_range.rb', line 44
def right_bounds(first, last)
results = []
while last > first
range = RegexForRange::Util.from_end(last)
results.push(range)
last = range.first - 1
end
return results.reverse
end
|