Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/tim-evans/maguire
A simple gem to format money
https://github.com/tim-evans/maguire
Last synced: 14 days ago
JSON representation
A simple gem to format money
- Host: GitHub
- URL: https://github.com/tim-evans/maguire
- Owner: tim-evans
- License: mit
- Created: 2015-04-21T17:39:03.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2014-10-14T20:12:13.000Z (about 10 years ago)
- Last Synced: 2024-12-09T10:42:28.980Z (19 days ago)
- Language: Ruby
- Size: 445 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Maguire [![Build Status](https://next.travis-ci.org/paddle8/maguire.svg)](https://next.travis-ci.org/paddle8/maguire) [![Code Climate](https://codeclimate.com/github/paddle8/maguire.png)](https://codeclimate.com/github/paddle8/maguire) [![Code Climate](https://codeclimate.com/github/paddle8/maguire/coverage.png)](https://codeclimate.com/github/paddle8/maguire)
Maguire handles formatting currencies in various locales with capabilities to layer custom data sets on top.
## Adding your own locales
To add your own locale information, point Maguire to the directory in your project where the locale files will be:
```ruby
Maguire.locale_paths << "path/to/my/locales"
```If you're adding a customization for French-speaking Canadians, the JSON file should be named `fr_CA.json`.
The file should *at least* have a layouts hash for providing information on how to format the currencies. The layout format should always be in US Dollars (using the code `USD`, and symbol `$`) and use the monetary value of `1234567890.12`. In addition, there's an optional layout if there's a custom format when there's no minor units (cf. '$1.-"). The monetary value for the zero layout is `1.00`.
So a layout for use in Quebec might be:
```json
{
"layouts": {
"positive": "1.234.567.890,12 $",
"negative": "-1.234.567.890,12 $"
}
}
```Note: positive and negative layouts must be provided.
## Adding your own currencies
Adding your own custom currencies works just like adding your own locales; point Maguire to the directory where your currency files are:
```ruby
Maguire.data_paths << "path/to/my/currencies"
```If you're adding Bitcoin to your project, the JSON file should be named `BTC`. (This corresponds to the lookup code used by the currency parameter passed into the `format` method.)
Currency files are required to have a `"symbol"` (and `"symbol_html"` if needed), `"code"`, and `"minor_units"` values. (`"minor_units"` says how many minor units make up a major unit in the currency. If there is no minor unit, this should be 0.)
A file for the Bitcoin currency would look like:
```json
{
"name": "Bitcoin",
"code": "BTC",
"symbol": "฿",
"symbol_html": "฿",
"minor_units": 8
}
```After doing this, you can format your Bitcoins:
```ruby
Maguire.format({ value: 400_000_00000000, currency: "BTC" }, { strip_insignificant_zeros: true })
# ฿400,000
```