Module: Monetize

Defined in:
lib/monetize.rb,
lib/monetize/errors.rb,
lib/monetize/parser.rb,
lib/monetize/version.rb,
lib/monetize/collection.rb

Defined Under Namespace

Classes: ArgumentError, Collection, Error, ParseError, Parser

Constant Summary collapse

VERSION =
'1.8.0'

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.assume_from_symbolObject

Returns the value of attribute assume_from_symbol.



15
16
17
# File 'lib/monetize.rb', line 15

def assume_from_symbol
  @assume_from_symbol
end

.enforce_currency_delimitersObject

Monetize uses the delimiters set in the currency to separate integers from decimals, and to ignore thousands separators. In some corner cases, though, it will try to determine the correct separator by itself. Set this to true to enforce the delimiters set in the currency all the time.



21
22
23
# File 'lib/monetize.rb', line 21

def enforce_currency_delimiters
  @enforce_currency_delimiters
end

Class Method Details

.extract_cents(input, currency = Money.default_currency) ⇒ Object



79
80
81
# File 'lib/monetize.rb', line 79

def self.extract_cents(input, currency = Money.default_currency)
  Monetize::Parser.new(input).parse_cents(currency)
end

.from_bigdecimal(value, currency = Money.default_currency) ⇒ Object



63
64
65
# File 'lib/monetize.rb', line 63

def self.from_bigdecimal(value, currency = Money.default_currency)
  Money.from_amount(value, currency)
end

.from_fixnum(value, currency = Money.default_currency) ⇒ Object



51
52
53
54
55
# File 'lib/monetize.rb', line 51

def self.from_fixnum(value, currency = Money.default_currency)
  currency = Money::Currency.wrap(currency)
  value *= currency.subunit_to_unit
  Money.new(value, currency)
end

.from_float(value, currency = Money.default_currency) ⇒ Object



58
59
60
61
# File 'lib/monetize.rb', line 58

def self.from_float(value, currency = Money.default_currency)
  value = BigDecimal.new(value.to_s)
  from_bigdecimal(value, currency)
end

.from_numeric(value, currency = Money.default_currency) ⇒ Object



67
68
69
70
71
72
73
74
75
76
77
# File 'lib/monetize.rb', line 67

def self.from_numeric(value, currency = Money.default_currency)
  case value
  when Integer
    from_fixnum(value, currency)
  when Numeric
    value = BigDecimal.new(value.to_s)
    from_bigdecimal(value, currency)
  else
    fail ArgumentError, "'value' should be a type of Numeric"
  end
end

.from_string(value, currency = Money.default_currency) ⇒ Object



46
47
48
49
# File 'lib/monetize.rb', line 46

def self.from_string(value, currency = Money.default_currency)
  value = BigDecimal.new(value.to_s)
  from_bigdecimal(value, currency)
end

.parse(input, currency = Money.default_currency, options = {}) ⇒ Object



24
25
26
27
28
# File 'lib/monetize.rb', line 24

def self.parse(input, currency = Money.default_currency, options = {})
  parse! input, currency, options
rescue Error
  nil
end

.parse!(input, currency = Money.default_currency, options = {}) ⇒ Object



30
31
32
33
34
35
36
37
38
39
40
# File 'lib/monetize.rb', line 30

def self.parse!(input, currency = Money.default_currency, options = {})
  return input if input.is_a?(Money)
  return from_numeric(input, currency) if input.is_a?(Numeric)

  parser = Monetize::Parser.new(input, currency, options)
  currency_from_input = Money::Currency.wrap(parser.parse_currency)

  Money.new(parser.parse_cents(currency_from_input), currency_from_input)
rescue Money::Currency::UnknownCurrency => e
  fail ParseError, e.message
end

.parse_collection(input, currency = Money.default_currency, options = {}) ⇒ Object



42
43
44
# File 'lib/monetize.rb', line 42

def self.parse_collection(input, currency = Money.default_currency, options = {})
  Collection.parse(input, currency, options)
end