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