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
-
.extract_cents(input, currency = Money.default_currency) ⇒ Object
-
.from_bigdecimal(value, currency = Money.default_currency) ⇒ Object
-
.from_fixnum(value, currency = Money.default_currency) ⇒ Object
-
.from_float(value, currency = Money.default_currency) ⇒ Object
-
.from_numeric(value, currency = Money.default_currency) ⇒ Object
-
.from_string(value, currency = Money.default_currency) ⇒ Object
-
.parse(input, currency = Money.default_currency, options = {}) ⇒ Object
-
.parse!(input, currency = Money.default_currency, options = {}) ⇒ Object
-
.parse_collection(input, currency = Money.default_currency, options = {}) ⇒ Object
Class Attribute Details
.assume_from_symbol ⇒ Object
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_delimiters ⇒ Object
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
79
80
81
|
# File 'lib/monetize.rb', line 79
def self.(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
|