1
0
Fork 0
mirror of https://github.com/maybe-finance/maybe.git synced 2025-08-04 13:05:19 +02:00
Maybe/app/models/time_series/value.rb

33 lines
691 B
Ruby
Raw Normal View History

class TimeSeries::Value
2024-04-18 18:03:52 -06:00
include Comparable
2024-04-18 18:03:52 -06:00
attr_accessor :trend
attr_reader :value, :date, :original
2024-04-18 18:03:52 -06:00
def initialize(obj)
@original = obj.fetch(:original, obj)
2024-04-18 18:03:52 -06:00
if obj.is_a?(Hash)
@date = obj[:date]
@value = obj[:value]
else
@date = obj.date
@value = obj.value
end
2024-04-18 18:03:52 -06:00
validate_input
end
2024-04-18 18:03:52 -06:00
def <=>(other)
result = date <=> other.date
result = value <=> other.value if result == 0
result
end
private
def validate_input
raise ArgumentError, "Date is required" unless @date.is_a?(Date)
raise ArgumentError, "Money or Numeric value is required" unless @value.is_a?(Money) || @value.is_a?(Numeric)
end
end