class DurationEstimate::SizedQueue

Queue (array) that can hold max_size items at most.

Attributes

items[RW]

Collection of items.

@return [Array]

max_size[RW]

Maximum number the collection will hold.

@return [Fixnum]

Public Class Methods

new(max_size) click to toggle source

Setup.

@param max_size [Fixnum] What is the maximum size?

# File lib/duration_estimate/sized_queue.rb, line 17
def initialize(max_size)
  self.max_size = max_size
  self.items    = []
end

Public Instance Methods

<<(item) click to toggle source

Add an item into the collection.

@param item [Object] Item to add.

@return [SizedQueue] Self.

# File lib/duration_estimate/sized_queue.rb, line 27
def <<(item)
  items << item
  items.shift if items.size > max_size
  self
end
average() click to toggle source

Calculate mean (average). It is assumed that the objects in collection respond to :+ method.

@return [Numeric, nil]

# File lib/duration_estimate/sized_queue.rb, line 37
def average
  size = items.size
  return if size.zero?
  items.reduce(:+) / size
end