Class: CoinSync::Formatter
- Inherits:
-
Object
- Object
- CoinSync::Formatter
- Defined in:
- lib/coinsync/formatter.rb
Instance Method Summary collapse
- #format_crypto(amount) ⇒ Object
- #format_decimal(value, precision: nil) ⇒ Object
- #format_fiat(amount) ⇒ Object
- #format_fiat_price(amount) ⇒ Object
- #format_float(value, precision:) ⇒ Object
- #format_time(time) ⇒ Object
-
#initialize(config) ⇒ Formatter
constructor
A new instance of Formatter.
- #parse_decimal(string) ⇒ Object
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 |