lib/barometer/data/sun.rb in barometer-0.8.0 vs lib/barometer/data/sun.rb in barometer-0.9.0

- old
+ new

@@ -1,33 +1,33 @@ module Barometer - # - # A simple Sun class - # - # Used to store sunrise and sunset information - # - class Data::Sun + module Data + class Sun + include Virtus.value_object - attr_reader :rise, :set + attribute :rise, ::Time + attribute :set, ::Time - def initialize(rise=nil, set=nil) - raise ArgumentError unless (rise.is_a?(Data::LocalTime) || rise.nil?) - raise ArgumentError unless (set.is_a?(Data::LocalTime) || set.nil?) - @rise = rise - @set = set - end + def nil? + !(rise || set) + end - def nil? - (@rise || @set) ? false : true - end + def after_rise?(time) + time >= rise + end - def after_rise?(time) - raise ArgumentError unless time.is_a?(Data::LocalTime) - time >= @rise - end + def before_set?(time) + time <= set + end - def before_set?(time) - raise ArgumentError unless time.is_a?(Data::LocalTime) - time <= @set - end + def to_s + [_to_s('rise', rise), _to_s('set', set)].compact.join(', ') + end + private + + def _to_s(prefix, value) + return unless value + "#{prefix}: #{value.strftime('%H:%M')}" + end + end end end