Class: Amount::Display
- Inherits:
-
Object
- Object
- Amount::Display
- Defined in:
- lib/amount/display.rb
Overview
Formats amounts for UI output without changing their type.
Instance Method Summary collapse
- #formatted ⇒ String
- #in_unit(unit) ⇒ BigDecimal
-
#initialize(amount) ⇒ Display
constructor
A new instance of Display.
- #to_s ⇒ String
- #ui(unit: nil, direction: :floor, decorated: true, trim_zeros: nil) ⇒ String
Constructor Details
#initialize(amount) ⇒ Display
Returns a new instance of Display.
9 10 11 12 |
# File 'lib/amount/display.rb', line 9 def initialize(amount) @amount = amount @entry = amount.registry_entry end |
Instance Method Details
#formatted ⇒ String
15 16 17 |
# File 'lib/amount/display.rb', line 15 def formatted format("%.#{@entry.decimals}f", @amount.decimal) end |
#in_unit(unit) ⇒ BigDecimal
51 52 53 54 |
# File 'lib/amount/display.rb', line 51 def in_unit(unit) unit_spec = fetch_display_unit(unit) @amount.decimal * Amount.coerce_decimal(unit_spec[:scale]) end |
#to_s ⇒ String
44 45 46 47 |
# File 'lib/amount/display.rb', line 44 def to_s rounded = round(@amount.decimal, @entry.ui_decimals, :floor) "#{@entry.symbol}|#{format_number(rounded, @entry.ui_decimals, false)}" end |
#ui(unit: nil, direction: :floor, decorated: true, trim_zeros: nil) ⇒ String
35 36 37 38 39 40 41 |
# File 'lib/amount/display.rb', line 35 def ui(unit: nil, direction: :floor, decorated: true, trim_zeros: nil) if unit render_display_unit(unit, direction, decorated:, trim_zeros:) else render_default(direction, decorated:, trim_zeros:) end end |