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