README.md in monetize-1.12.0 vs README.md in monetize-1.13.0
- old
+ new
@@ -8,18 +8,14 @@
A library for converting various objects into `Money` objects.
## Installation
-Add this line to your application's Gemfile:
+Run:
- gem 'monetize'
+ bundle add monetize
-And then execute:
-
- $ bundle
-
Or install it yourself as:
$ gem install monetize
## Usage
@@ -50,9 +46,25 @@
Monetize.assume_from_symbol = true
Monetize.parse("£100") == Money.new(100_00, "GBP")
"€100".to_money == Money.new(100_00, "EUR")
```
+
+Parsing can be improved where the input is not expected to contain fractonal subunits.
+To do this, set `Monetize.expect_whole_subunits = true`
+
+```ruby
+Monetize.parse('EUR 10,000') == Money.new(100_00, "EUR")
+
+Monetize.expect_whole_subunits = true
+Monetize.parse('EUR 10,000') == Money.new(10_000_00, "EUR")
+```
+
+Why does this work? If we expect fractional subunits then the parser will treat a single
+delimiter as a decimal marker if it matches the currency's decimal marker. But often
+this is not the case - a European site will show $10.000 because that's the local format.
+As a human, if this was a stock ticker we might expect fractional cents. If it's a retail price we know it's actually an incorrect thousands separator.
+
Monetize can also parse a list of values, returning an array-like object ([Monetize::Collection](lib/collection.rb)):
```ruby
Monetize.parse_collection("€80/$100") == [Money.new(80_00, "EUR"), Money.new(100_00, "USD")]