lib/barometer/response/prediction.rb
require 'virtus'
module Barometer
module Response
class Prediction
include Virtus.model
attribute :high, Data::Attribute::Temperature
attribute :low, Data::Attribute::Temperature
attribute :pop, Data::Attribute::Float
attribute :sun, Data::Attribute::Sun
attribute :starts_at, Data::Attribute::Time
attribute :ends_at, Data::Attribute::Time
attribute :icon, String
attribute :condition, String
attr_reader :date
def date=(args)
args = Array(args)
date = args.shift
timezone = args.shift
date_as_time = Utils::Time.parse(date)
@starts_at = Utils::Time.start_of_day(date_as_time)
@ends_at = Utils::Time.end_of_day(date_as_time)
@date = ::Date.new(@starts_at.year, @starts_at.month, @starts_at.day)
if timezone
@starts_at = timezone.local_to_utc(@starts_at)
@ends_at = timezone.local_to_utc(@ends_at)
end
end
def covers?(time)
raise ArgumentError unless time.is_a?(Time)
time >= @starts_at && time <= @ends_at
end
end
end
end