class TimeCost::RangeList

Public Class Methods

new() click to toggle source
# File lib/timecost/range_list.rb, line 4
def initialize
        @ranges = []
end

Public Instance Methods

add(range) click to toggle source
# File lib/timecost/range_list.rb, line 8
def add range
        merged = false
        merged_range = nil

        # merge
        @ranges.each do |old|
                #pp old
                if old.overlap? range then
                        old.merge range
                        merged_range = old
                        merged = true
                        break
                end
        end

        # add if needed
        if merged then
                @ranges.delete merged_range
                self.add merged_range
        else 
                @ranges.push range
        end
end
each() { |r| ... } click to toggle source
# File lib/timecost/range_list.rb, line 32
def each 
        @ranges.each do |r|
                yield r
        end
end
sum() click to toggle source
# File lib/timecost/range_list.rb, line 38
def sum
        result = 0
        @ranges.each do |r|
                result += r.diff
        end
        return result
end