Class: Money::Currency
- Inherits:
-
Object
- Object
- Money::Currency
- Defined in:
- lib/money/currency.rb,
lib/money/currency/loader.rb
Defined Under Namespace
Modules: Loader Classes: UnknownCurrency
Constant Summary collapse
- @@mutex =
Mutex.new
- @@loaded_currencies =
{}
Instance Attribute Summary collapse
-
#decimal_mark ⇒ Object
readonly
Returns the value of attribute decimal_mark.
-
#disambiguate_symbol ⇒ Object
readonly
Returns the value of attribute disambiguate_symbol.
-
#iso_code ⇒ Object
(also: #to_s)
readonly
Returns the value of attribute iso_code.
-
#iso_numeric ⇒ Object
readonly
Returns the value of attribute iso_numeric.
-
#minor_units ⇒ Object
readonly
Returns the value of attribute minor_units.
-
#name ⇒ Object
readonly
Returns the value of attribute name.
-
#smallest_denomination ⇒ Object
readonly
Returns the value of attribute smallest_denomination.
-
#subunit_symbol ⇒ Object
readonly
Returns the value of attribute subunit_symbol.
-
#subunit_to_unit ⇒ Object
readonly
Returns the value of attribute subunit_to_unit.
-
#symbol ⇒ Object
readonly
Returns the value of attribute symbol.
Class Method Summary collapse
Instance Method Summary collapse
- #compatible?(other) ⇒ Boolean
- #eql?(other) ⇒ Boolean (also: #==)
-
#initialize(currency_iso) ⇒ Currency
constructor
A new instance of Currency.
Constructor Details
#initialize(currency_iso) ⇒ Currency
Returns a new instance of Currency.
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
# File 'lib/money/currency.rb', line 32 def initialize(currency_iso) data = self.class.currencies[currency_iso] raise UnknownCurrency, "Invalid iso4217 currency '#{currency_iso}'" unless data @symbol = data['symbol'] @disambiguate_symbol = data['disambiguate_symbol'] || data['symbol'] @subunit_symbol = data['subunit_symbol'] @iso_code = data['iso_code'] @iso_numeric = data['iso_numeric'] @name = data['name'] @smallest_denomination = data['smallest_denomination'] @subunit_to_unit = data['subunit_to_unit'] @decimal_mark = data['decimal_mark'] @minor_units = subunit_to_unit == 0 ? 0 : Math.log(subunit_to_unit, 10).round.to_i freeze end |
Instance Attribute Details
#decimal_mark ⇒ Object (readonly)
Returns the value of attribute decimal_mark.
29 30 31 |
# File 'lib/money/currency.rb', line 29 def decimal_mark @decimal_mark end |
#disambiguate_symbol ⇒ Object (readonly)
Returns the value of attribute disambiguate_symbol.
29 30 31 |
# File 'lib/money/currency.rb', line 29 def disambiguate_symbol @disambiguate_symbol end |
#iso_code ⇒ Object (readonly) Also known as: to_s
Returns the value of attribute iso_code.
29 30 31 |
# File 'lib/money/currency.rb', line 29 def iso_code @iso_code end |
#iso_numeric ⇒ Object (readonly)
Returns the value of attribute iso_numeric.
29 30 31 |
# File 'lib/money/currency.rb', line 29 def iso_numeric @iso_numeric end |
#minor_units ⇒ Object (readonly)
Returns the value of attribute minor_units.
29 30 31 |
# File 'lib/money/currency.rb', line 29 def minor_units @minor_units end |
#name ⇒ Object (readonly)
Returns the value of attribute name.
29 30 31 |
# File 'lib/money/currency.rb', line 29 def name @name end |
#smallest_denomination ⇒ Object (readonly)
Returns the value of attribute smallest_denomination.
29 30 31 |
# File 'lib/money/currency.rb', line 29 def smallest_denomination @smallest_denomination end |
#subunit_symbol ⇒ Object (readonly)
Returns the value of attribute subunit_symbol.
29 30 31 |
# File 'lib/money/currency.rb', line 29 def subunit_symbol @subunit_symbol end |
#subunit_to_unit ⇒ Object (readonly)
Returns the value of attribute subunit_to_unit.
29 30 31 |
# File 'lib/money/currency.rb', line 29 def subunit_to_unit @subunit_to_unit end |
#symbol ⇒ Object (readonly)
Returns the value of attribute symbol.
29 30 31 |
# File 'lib/money/currency.rb', line 29 def symbol @symbol end |
Class Method Details
.currencies ⇒ Object
24 25 26 |
# File 'lib/money/currency.rb', line 24 def currencies @@currencies ||= Loader.load_currencies end |
.find(currency_iso) ⇒ Object
18 19 20 21 22 |
# File 'lib/money/currency.rb', line 18 def find(currency_iso) new(currency_iso) rescue UnknownCurrency nil end |
.new(currency_iso) ⇒ Object Also known as: find!
11 12 13 14 15 |
# File 'lib/money/currency.rb', line 11 def new(currency_iso) raise UnknownCurrency, "Currency can't be blank" if currency_iso.nil? || currency_iso.to_s.empty? iso = currency_iso.to_s.downcase @@loaded_currencies[iso] || @@mutex.synchronize { @@loaded_currencies[iso] = super(iso) } end |
Instance Method Details
#compatible?(other) ⇒ Boolean
52 53 54 |
# File 'lib/money/currency.rb', line 52 def compatible?(other) other.is_a?(NullCurrency) || eql?(other) end |
#eql?(other) ⇒ Boolean Also known as: ==
48 49 50 |
# File 'lib/money/currency.rb', line 48 def eql?(other) self.class == other.class && iso_code == other.iso_code end |