class CoinSync::Formatter

Public Class Methods

new(config) click to toggle source
# File lib/coinsync/formatter.rb, line 5
def initialize(config)
  @config = config
  @decimal_separator = config.custom_decimal_separator
end

Public Instance Methods

format_crypto(amount) click to toggle source
# File lib/coinsync/formatter.rb, line 31
def format_crypto(amount)
  format_decimal(amount, precision: 8)
end
format_decimal(value, precision: nil) click to toggle source
# File lib/coinsync/formatter.rb, line 10
def format_decimal(value, precision: nil)
  v = precision ? value.round(precision) : value
  s = v.to_s('F').gsub(/\.0$/, '')
  s = s.gsub(/\./, @decimal_separator) if @decimal_separator
  s
end
format_fiat(amount) click to toggle source
# File lib/coinsync/formatter.rb, line 23
def format_fiat(amount)
  format_float(amount, precision: 2)
end
format_fiat_price(amount) click to toggle source
# File lib/coinsync/formatter.rb, line 27
def format_fiat_price(amount)
  format_float(amount, precision: (amount < 10 ? 4 : 2))
end
format_float(value, precision:) click to toggle source
# File lib/coinsync/formatter.rb, line 17
def format_float(value, precision:)
  s = sprintf("%.#{precision}f", value)
  s = s.gsub(/\./, @decimal_separator) if @decimal_separator
  s
end
format_time(time) click to toggle source
# File lib/coinsync/formatter.rb, line 35
def format_time(time)
  local_time = @config.timezone ? @config.timezone.utc_to_local(time.utc) : time
  local_time.strftime(@config.time_format || '%Y-%m-%d %H:%M:%S')
end
parse_decimal(string) click to toggle source
# File lib/coinsync/formatter.rb, line 40
def parse_decimal(string)
  string = string.gsub(@decimal_separator, '.') if @decimal_separator
  BigDecimal.new(string)
end