lib/xirr/transaction.rb
# frozen_string_literal: true
module Xirr
# A unit of the Cashflow.
class Transaction
attr_reader :amount, :date
# @example
# Transaction.new -1000, date: Date.now
# @param amount [Numeric]
# @param opts [Hash]
# @note Don't forget to add date: [Date] in the opts hash.
def initialize(amount, opts = {})
self.amount = amount
# Set optional attributes..
opts.each do |key, value|
send("#{key}=", value)
end
end
# Sets the date
# @param value [Date, Time]
# @return [Date]
def date=(value)
@date = value.is_a?(Time) ? value.to_date : value
end
# Sets the amount
# @param value [Numeric]
# @return [Float]
def amount=(value)
@amount = value.to_f || 0.0
end
# @return [String]
def inspect
"T(#{@amount},#{@date})"
end
end
end