# frozen_string_literal: true

module NumberUtils
  FORMAT_LOCALES = {
    'dot' => 'de',
    'space' => 'fr',
    'comma' => 'en',
    'usd' => 'en',
    'eur' => 'fr',
    'gbp' => 'en'
  }.freeze

  CURRENCY_SYMBOLS = {
    'usd' => '$',
    'eur' => '€',
    'gbp' => '£'
  }.freeze

  module_function

  def format_number(number, format)
    locale = FORMAT_LOCALES[format]

    if CURRENCY_SYMBOLS[format]
      ApplicationController.helpers.number_to_currency(number, locale:, precision: 2, unit: CURRENCY_SYMBOLS[format])
    elsif locale
      ApplicationController.helpers.number_with_delimiter(number, locale:)
    elsif format == 'percent'
      "#{number}%"
    elsif format == 'percent_space'
      "#{number.to_s.tr('.', ',')} %"
    else
      number
    end
  end
end
