Class: Mint::Railtie

Inherits:
Rails::Railtie
  • Object
show all
Defined in:
lib/minting/railties.rb

Class Method Summary collapse

Class Method Details

.register_custom_currencies!Object



33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/minting/railties.rb', line 33

def self.register_custom_currencies!
  Array(Mint.config.added_currencies).each do |currency_data|
    if currency_data.respond_to?(:values_at)
      code = currency_data[:currency] || currency_data['currency']
      subunit = currency_data[:subunit] || currency_data['subunit']
      symbol = currency_data[:symbol] || currency_data['symbol']
    else
      code, subunit, symbol = *currency_data
    end
    Currency.register(code:, subunit:, symbol:)
  end
end

.setup_locale_backend!Object



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/minting/railties.rb', line 14

def self.setup_locale_backend!
  Mint.locale_backend = lambda {
    fmt = I18n.t('number.currency.format', default: {})
    translator = ->(s) { s&.gsub('%n', '%<amount>f')&.gsub('%u', '%<symbol>s') }

    format = if fmt.key?(:positive) || fmt.key?(:negative) || fmt.key?(:zero)
               {
                 positive: translator.call(fmt[:positive] || fmt[:format]),
                 negative: translator.call(fmt[:negative] || fmt[:format]),
                 zero: translator.call(fmt[:zero] || fmt[:format])
               }
             else
               translator.call(fmt[:format])
             end

    { decimal: fmt[:separator], thousand: fmt[:delimiter], format: format }
  }
end