price-like-humans
Version:
JS tools for formatting price or numbers to human likes format.
198 lines (146 loc) • 7.09 kB
Markdown
# Price like Humans
[](https://travis-ci.org/irodger/price-like-humans)
[](https://www.codacy.com/manual/irodger/price-like-humans?utm_source=github.com&utm_medium=referral&utm_content=irodger/price-like-humans&utm_campaign=Badge_Grade)
[](https://www.codacy.com/manual/irodger/price-like-humans?utm_source=github.com&utm_medium=referral&utm_content=irodger/price-like-humans&utm_campaign=Badge_Coverage)
[](http://badge.fury.io/js/price-like-humans)
[](http://badge.fury.io/js/price-like-humans)
[](http://npm-stat.com/charts.html?package=price-like-humans)
[](https://github.com/irodger/price-like-humans/blob/master/LICENSE)
[](https://github.com/irodger/price-like-humans/issues)
[](https://github.com/irodger/price-like-humans/pulls)
JS kit for formatting price or numbers to human likes format. Also kit will be useful for crypto-currency with 7+ numbers after a delimiter
- Written with [TypeScript](https://github.com/microsoft/TypeScript)
- Corrected with [Prettier](https://github.com/prettier/prettier)
- Tested with [Jest](https://github.com/facebook/jest)
- Bundled with [Rollup](https://github.com/rollup/rollup)
#### ⚠️ Breaking changes from 0.6.0 to 0.7.0 see the [changelog](#changelog)
Spoiler: changed [arguments](#formattedprice-options) in [formattedPrice](#formattedprice)
## Table of contents
- [Install](#install)
- [Methods](#methods)
- [Price formatter](#formattedprice)
- [formattedPrice options](#formattedprice-options)
- [Exponential formatter](#exponentformatter)
- [Usage](#usage)
- [NodeJS](#nodejs)
- [ES6](#es6)
- [Examples](#examples)
- [FormattedPrice](#formattedprice-examples)
- [ExponentFormatter](#exponentformatter-examples)
- [Changelog](#changelog)
- [License](#license)
## Install
### NPM users:
```
npm i --save-dev price-like-humans
```
### Yarn users:
```
yarn add price-like-humans -D
```
## Methods
| Methods | Returns | Description |
| -------------------------------- | -------- | --------------------------------------------------------------------------- |
| `formattedPrice(value, options)` | `string` | Formatting incoming numbers to humans like price with user locale delimiter |
| `exponentFormatter(value)` | `string` | Formatting exponential numbers to human likes numbers. Exponent free |
### formattedPrice
| Argument | Required | Argument type | Description |
| -------- | ------------ | ---------------- | ---------------------------------------------------------------------------------------------------------------- |
| value | _\*required_ | `number, string` | Incoming numbers which will be formatted (exponential friendly) |
| options | _optional_ | `object` | Settings list, see [formattedPrice options](#formattedprice-options) |
### exponentformatter
| Argument | Required | Argument type | Description |
| -------- | ------------ | ---------------- | ---------------------------------------- |
| value | _\*required_ | `number, string` | Incoming exponential numbers which will be formatted |
### formattedPrice options
| Argument | Argument type | Description |
| --------- | ------------- | ------------------------------------------------------------- |
| delimiter | `string` | Delimiter symbol. Number which split decimal. Can be replaced |
| separator | `string` | Symbol which separates grouped number. Can be replaced |
| lang | `string` | You can set locale option. Using user locale by default |
⚠️ Warning: When works in Nodejs environment, intl.NumberFormat contains 'en-US' locale only, so use the `separator` with `delimiter` when the code needs to run on a server-side.
## Usage
### NodeJS
```javascript
const priceLikeHumans = require('price-like-humans');
```
### ES6
```javascript
import priceLikeHumans from 'price-like-humans';
// or methods only
import { formattedPrice, exponentFormatter } from 'price-like-humans';
```
## Examples
### `formattedPrice` examples
Without separator arguments (putted your local separator)
```javascript
formattedPrice(12345.6789);
//> "12,345.678,9" // EU Locale
//> "12 345.678 9" // RU Locale
```
#### Using with options
```javascript
formattedPrice(12345.6789, { delimiter: ',' });
//> "12.345,678.9" // EN Locale
//> "12 345,678 9" // RU Locale
```
```javascript
formattedPrice(12345.6789, { separator: '.' });
//> "12.345,678.9" // EN Locale
//> "12.345,678.9" // RU Locale
```
```javascript
formattedPrice(12345.6789, { delimiter: '.', separator: ',' });
//> "12,345.678,9"
```
```javascript
formattedPrice(12345.6789, { lang: 'ru' });
//> "12 345,678 9"
```
```javascript
formattedPrice(12345.6789, { lang: 'en' });
//> "12,345.678,9"
```
```javascript
formattedPrice(1e-7, { lang: 'en' });
//> "0.000,000,1"
```
### `exponentFormatter` examples
```javascript
exponentFormatter(1e-7);
//> "0.0000001"
```
## Changelog
<details>
<summary>Show changelog</summary>
v0.8.0
- formattedPrice can formats exponential too
v0.7.0
- Changed arguments in formattedPrice
- Add more coverage and tests
- Remove debian lang detector
v0.6.7
- Added prettier
- Added dev unit tests
- Fix imports with methods only
v0.6.1
- Added typescript
- Added custom locale to formattedPrice
- Added several tests
- Added minifying
- Removed excessZero function (if you need that func, just parseFloat your number)
- Removed babel, compiling by rollup & typescript
v0.5.0
- Built with RollUp and Babel
v0.4.0
- Updated jest dependencies
v0.3.5
- Minor fixes
v0.3.1
- Changed priceFormatter incoming arguments type. Now it takes an object or once value
- Tested with Jest
- Refactored locale.js
- Refactored formattedPrice: Add default values
</details>
## License
Price Like Humans is [MIT licensed](https://github.com/irodger/price-like-humans/LICENSE).