Class: RangesMerger

Inherits:
Object
  • Object
show all
Extended by:
RangesMergerDivider, RangesMergerExclusion, RangesMergerMerging, RangesMergerUtils
Defined in:
lib/ranges_merger.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from RangesMergerMerging

merge

Methods included from RangesMergerUtils

array_to_ranges, normalize_array

Methods included from RangesMergerExclusion

exclude, two_way_exclusion

Constructor Details

#initialize(_array = []) ⇒ RangesMerger

Returns a new instance of RangesMerger.



14
15
16
17
18
# File 'lib/ranges_merger.rb', line 14

def initialize(_array = [])
  @ranges = self.class.merge(
    self.class.normalize_array(_array)
  )
end

Instance Attribute Details

#rangesObject (readonly)

Returns the value of attribute ranges.



12
13
14
# File 'lib/ranges_merger.rb', line 12

def ranges
  @ranges
end

Instance Method Details

#%(interval) ⇒ Object



46
47
48
# File 'lib/ranges_merger.rb', line 46

def %(interval)
  divide(interval, false)
end

#+(_array) ⇒ Object



25
26
27
# File 'lib/ranges_merger.rb', line 25

def +(_array)
  add(_array)
end

#-(_array) ⇒ Object



34
35
36
# File 'lib/ranges_merger.rb', line 34

def -(_array)
  remove(_array)
end

#/(interval) ⇒ Object



42
43
44
# File 'lib/ranges_merger.rb', line 42

def /(interval)
  divide(interval, true)
end

#add(_array) ⇒ Object



20
21
22
23
# File 'lib/ranges_merger.rb', line 20

def add(_array)
  @ranges = self.class.merge(@ranges + _array)
  return self
end

#divide(interval, allow_partials = true) ⇒ Object



38
39
40
# File 'lib/ranges_merger.rb', line 38

def divide(interval, allow_partials = true)
  return self.class.divide(@ranges, interval, allow_partials)
end

#remove(_array) ⇒ Object



29
30
31
32
# File 'lib/ranges_merger.rb', line 29

def remove(_array)
  @ranges = self.class.exclude(@ranges, _array)
  return self
end

#to_arrayObject



54
55
56
# File 'lib/ranges_merger.rb', line 54

def to_array
  @ranges
end

#to_rangesObject



50
51
52
# File 'lib/ranges_merger.rb', line 50

def to_ranges
  self.class.array_to_ranges(@ranges)
end