lib/money_helper.rb in money_helper-1.0.0 vs lib/money_helper.rb in money_helper-1.0.1
- old
+ new
@@ -23,25 +23,33 @@
#
# amount: (Float)
# currency: (String)
# number_only: (Boolean) optional flag to exclude currency indicators (retains number formatting
# specific to currency)
- def self.money_to_text(amount, currency, number_only = false)
+ def self.money_to_text(amount, currency, number_only = false, options = {})
return nil unless amount.present?
currency = "USD" if currency.blank?
valid_currency = code_valid?(currency) ? currency : "USD"
symbol = symbol_for_code(currency)
include_symbol = !number_only && symbol.present? && OK_SYMBOLS.include?(symbol)
subunit_factor = Money::Currency.new(valid_currency).subunit_to_unit
+ money_options = { no_cents: true, symbol_position: :before, symbol: include_symbol }.merge(options)
(number_only || SYMBOL_ONLY.include?(currency) ? "" : currency + " ") +
- Money.new(amount*subunit_factor.ceil, valid_currency).format({
- no_cents: true,
- symbol_position: :before,
- symbol: include_symbol
- }).delete(' ')
+ Money.new(amount*subunit_factor.ceil, valid_currency).format(money_options).delete(' ')
end
+ def self.symbol_with_optional_iso_code(currency = 'USD')
+ symbol = symbol_for_code(currency)
+ if SYMBOL_ONLY.include?(currency)
+ symbol
+ elsif symbol && OK_SYMBOLS.include?(symbol)
+ "#{iso_for_currency(currency)} #{symbol}"
+ else
+ "#{iso_for_currency(currency)}"
+ end
+ end
+
##
# Formats a low and high amount in the given currency into a price string
#
# = Example
#
@@ -74,13 +82,19 @@
def self.code_valid?(code)
Money::Currency.stringified_keys.include?(code.downcase)
end
+ def self.iso_for_currency(code)
+ return unless code && code_valid?(code)
+ Money::Currency.new(code).iso_code.tap do |iso_code|
+ iso_code.strip! if iso_code.present?
+ end
+ end
+
def self.symbol_for_code(code)
return unless code && code_valid?(code)
Money::Currency.new(code).symbol.tap do |symbol|
symbol.strip! if symbol.present?
end
end
-
end