项目作者: webschik

项目描述 :
Isomorphic JavaScript numbers formatter & parser
高级语言: TypeScript
项目地址: git://github.com/webschik/nmbr.git
创建时间: 2017-01-23T16:39:27Z
项目社区:https://github.com/webschik/nmbr

开源协议:MIT License

下载


nmbr

Build Status
npm
npm
npm
Coverage Status

Isomorphic JavaScript numbers parser and formatter

Requirements

Installation

  1. npm install nmbr --save
  1. // Standard HTML import
  2. <script src="node_modules/nmbr/lib/index.js"></script>
  3. <script>
  4. var formatNumber = window.nmbr.formatNumber;
  5. ...
  6. </script>
  1. // JS module
  2. import {formatNumber, parseNumber, shortNumber} from 'nmbr';

API

Formatter

Converts the number to a string by specified options.

formatNumber

This method takes 2 arguments:

  • number - any JS number
  • options:
    1. {
    2. fractionSize?: number;
    3. roundSize?: number;
    4. minFractionSize?: number;
    5. separateThousands?: boolean;
    6. thousandDelimiter?: string;
    7. fractionDelimiter?: string;
    8. preset?: string;
    9. }

Example:

  1. import {formatNumber} from 'nmbr';
  2. // '2.453,43'
  3. const result = formatNumber(24534.343e-1, {
  4. fractionSize: 2,
  5. thousandDelimiter: '.',
  6. fractionDelimiter: ','
  7. });

More cases you may find in my test cases

Formatting presets

You may define your own set of rules for formatting:

  1. import {addFormattingPreset} from 'nmbr';
  2. addFormattingPreset('myOwnPreset', {
  3. fractionSize: 1,
  4. thousandDelimiter: '.',
  5. fractionDelimiter: ','
  6. });
  7. // '120.009,1'
  8. const result = formatNumber(120009.123456, {
  9. preset: 'myOwnPreset'
  10. });

Parser

parseNumber

Parses a number from input string:

  1. parseNumber('1,234', {thousandDelimiter: ','}); // 1234
  2. parseNumber('1,234.56', {thousandDelimiter: ','}); // 1234.56
  3. parseNumber('1.234,56', {thousandDelimiter: '.'}); // 1234.56
  4. parseNumber('1.234.567', {thousandDelimiter: '.'}); // 1234567

You may omit delimiter options if you parse only fractional numbers:

  1. import {parseNumber} from 'nmbr';
  2. parseNumber('.02'); // 0.02
  3. parseNumber('.1'); // 0.1
  4. parseNumber(' 1 . 0'); // 1
  5. parseNumber('-1 . 2'); // -1.2
  6. parseNumber('--1 . 0'); // -1
  7. parseNumber(' 1 , 1'); // 1.1
  8. parseNumber('-1 , 2'); // -1.2
  9. parseNumber('-1,12.78'); // -112.78
  10. parseNumber('-1.13,79'); // -113.79

Shortener

shortNumber

Converts long numbers to short ones:

  1. import {shortNumber} from 'nmbr';
  2. shortNumber(5432); // 5.4k
  3. shortNumber(1236903); // 1.2M
  4. shortNumber(1236903, {
  5. template: "The size is [value]([unit]b)"
  6. }); // The size is 1.2(Mb)

This method takes 2 arguments:

  • value - number or string: 2.13 or '2.13'
  • options:
    ```
    {
    fractionSize?: number;
    template?: string;
    maxUnit?: NumberShortenerUnitName;
    minUnit?: NumberShortenerUnitName;
    }

// NumberShortenerUnitName = ‘Y’|’Z’|’E’|’P’|’T’|’G’|’M’|’k’|’h’|’da’|’d’|’c’|’m’|’µ’|’n’|’p’|’f’|’a’|’z’|’y’
```