lib/barometer/response/prediction_collection.rb
require 'date'
module Barometer
module Response
class PredictionCollection
include Enumerable
def initialize(*predictions)
@predictions = predictions
end
def each(&block)
@predictions.each(&block)
end
def <<(prediction)
@predictions << prediction
end
def [](index)
index.respond_to?(:to_i) ? @predictions[index] : self.for(index)
end
def size
@predictions.size
end
def for(time)
return nil unless size > 0
time = case time
when Date
Time.utc(time.year,time.month,time.day,12,0,0)
else
Utils::Time.parse(time)
end
detect{ |forecast| forecast.covers?(time) }
end
def build
prediction = Prediction.new
yield(prediction)
@predictions << prediction
end
end
end
end