Class: CoinSync::Formatter

Inherits:
Object
  • Object
show all
Defined in:
lib/coinsync/formatter.rb

Instance Method Summary collapse

Constructor Details

#initialize(config) ⇒ Formatter

Returns a new instance of Formatter.



5
6
7
8
# File 'lib/coinsync/formatter.rb', line 5

def initialize(config)
  @config = config
  @decimal_separator = config.custom_decimal_separator
end

Instance Method Details

#format_crypto(amount) ⇒ Object



31
32
33
# File 'lib/coinsync/formatter.rb', line 31

def format_crypto(amount)
  format_decimal(amount, precision: 8)
end

#format_decimal(value, precision: nil) ⇒ Object



10
11
12
13
14
15
# 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) ⇒ Object



23
24
25
# File 'lib/coinsync/formatter.rb', line 23

def format_fiat(amount)
  format_float(amount, precision: 2)
end

#format_fiat_price(amount) ⇒ Object



27
28
29
# 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:) ⇒ Object



17
18
19
20
21
# 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) ⇒ Object



35
36
37
38
# 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) ⇒ Object



40
41
42
43
# File 'lib/coinsync/formatter.rb', line 40

def parse_decimal(string)
  string = string.gsub(@decimal_separator, '.') if @decimal_separator
  BigDecimal.new(string)
end