module AspireBudget::Utils

Constants

LOTUS_DAY_ONE
TRANSACTION_STATUS_MAPPING

Public Class Methods

parse_date(value) click to toggle source

Parses a value to a date object @return [Date] @param value either a numeric object or an object responding to to_date

# File lib/aspire_budget/utils.rb, line 11
def parse_date(value)
  return parse_serial_date(value) if value.is_a?(Numeric)
  return value.to_date if value.respond_to?(:to_date)

  raise 'Unsupported date format'
end
parse_status(value) click to toggle source

Parses a status icon @return [Symbol] @param value [String]

# File lib/aspire_budget/utils.rb, line 34
def parse_status(value)
  TRANSACTION_STATUS_MAPPING.fetch(value, nil)
end
serialize_date(value) click to toggle source

Parses a value to a serial date @return [Float] @param value either a numeric object or an object responding to to_date

# File lib/aspire_budget/utils.rb, line 21
def serialize_date(value)
  return Float(value) if value.is_a?(Numeric) && value >= 0

  value = value.to_date if value.respond_to?(:to_date)
  raise 'Unsupported date value' unless value.is_a?(Date)
  raise "Date should be after #{LOTUS_DAY_ONE}" if LOTUS_DAY_ONE > value

  Float(value - LOTUS_DAY_ONE)
end
serialize_status(value) click to toggle source

Serialize a status symbol @return [String] @param value [Symbol]

# File lib/aspire_budget/utils.rb, line 41
def serialize_status(value)
  TRANSACTION_STATUS_MAPPING.key(value) || ''
end

Private Class Methods

parse_serial_date(days_after_lotus_day_one) click to toggle source
# File lib/aspire_budget/utils.rb, line 57
def parse_serial_date(days_after_lotus_day_one)
  LOTUS_DAY_ONE + days_after_lotus_day_one
end