Class: SlowestTimes

Inherits:
SizedList show all
Defined in:
lib/production_log/analyzer.rb

Overview

Stores limit time/object pairs, keeping only the largest limit items.

Sample usage:

l = SlowestTimes.new 5

l << [Time.now, 'one']
l << [Time.now, 'two']
l << [Time.now, 'three']
l << [Time.now, 'four']
l << [Time.now, 'five']
l << [Time.now, 'six']

p l.map { |i| i.last }

Instance Method Summary collapse

Methods inherited from SizedList

#<<

Constructor Details

#initialize(limit) ⇒ SlowestTimes

Creates a new SlowestTimes SizedList that holds only limit time/object pairs.



95
96
97
98
99
100
101
102
103
104
105
# File 'lib/production_log/analyzer.rb', line 95

def initialize(limit)
    super limit do |arr, new_item|
        fastest_time = arr.sort_by { |time, name| time }.first
        if fastest_time.first < new_item.first then
            arr.delete_at index(fastest_time)
            true
        else
            false
        end
    end
end