rootslab/abaco

View on GitHub
Readme.md

Summary

Maintainability
Test Coverage
### Abaco

[![NPM VERSION](http://img.shields.io/npm/v/abaco.svg?style=flat)](https://www.npmjs.org/package/abaco)
[![CODACY BADGE](https://img.shields.io/codacy/b18ed7d95b0a4707a0ff7b88b30d3def.svg?style=flat)](https://www.codacy.com/public/44gatti/abaco)
[![CODECLIMATE-TEST-COVERAGE](https://img.shields.io/codeclimate/c/rootslab/abaco.svg?style=flat)](https://codeclimate.com/github/rootslab/abaco)
[![LICENSE](http://img.shields.io/badge/license-MIT-blue.svg?style=flat)](https://github.com/rootslab/abaco#mit-license)

![NODE VERSION](https://img.shields.io/node/v/abaco.svg)
[![TRAVIS CI BUILD](http://img.shields.io/travis/rootslab/abaco.svg?style=flat)](http://travis-ci.org/rootslab/abaco)
[![BUILD STATUS](http://img.shields.io/david/rootslab/abaco.svg?style=flat)](https://david-dm.org/rootslab/abaco)
[![DEVDEPENDENCY STATUS](http://img.shields.io/david/dev/rootslab/abaco.svg?style=flat)](https://david-dm.org/rootslab/abaco#info=devDependencies)

[![NPM MONTHLY](http://img.shields.io/npm/dm/abaco.svg?style=flat)](http://npm-stat.com/charts.html?package=abaco)
![NPM YEARLY](https://img.shields.io/npm/dy/abaco.svg)

[![NPM GRAPH](https://nodei.co/npm/abaco.png?downloads=true&downloadRank=true&stars=true)](https://nodei.co/npm/abaco/)

> **_Abaco_**, an ultra fast number parser for Buffers. It parses a Buffer, or a portion of it, to get the Number value stored as (ASCII) String.

> It is faster than __parseInt()__, __parseFloat()__ and __Number()__ constructor to convert a String
> or a Buffer to a usable Number.

> __NOTE__: It adds the ability to parse a float with a radix argument, as for #parseInt.

### Install

```bash
$ npm install abaco [-g]
// clone repo
$ git clone git@github.com:rootslab/abaco.git
```

> __require__ returns an helper hash/obj.

```javascript
var Abaco  = require( 'abaco' );
```

### Run Tests

```bash
$ cd abaco/
$ npm test
```

### Run Benchmarks

```bash
$ cd abaco/
$ npm run-script bench
```

### Sample Usage

> See [examples](example/).


### Methods

> Arguments within [ ] are optional.

```javascript
/*
 * Parse a Buffer that contains string representation of an integer Number.
 * If radix is not specified, it defaults to 10; possible radix value range
 * is between 2 and 16.
 * If begin or end are not specified, it parses the entire Buffer.
 *
 * NOTE: js number precision is limited to ~ 2^53 or 10^16, it means, for example,
 * that the limit for decimal numbers is 16 bytes/chars; so it returns NaN for
 * values out of this range. NaN also signals that is better to use raw String,
 * because number representation is not accurate. See 'bl' table in the code to
 * check bytes limit for every radix.
 *
 * NOTE: Only '-' prefix is supported, no 0x' or '0' prefix, for hex or octal
 * digits; just use the begin offset for skipping some bytes.
 *
 */
Abaco#parseInt( Buffer b [, Number radix [, Number begin [, Number end ] ] ] ) : Number

/*
 * A strict parse, it returns NaN if the number parsed, contains some symbols
 * that are not allowed for the current radix alphabet.
 *
 * Example: #xparseInt( '012', 2 ) returns NaN, 2 is not in binary alphabet.
 */
Abaco#xparseInt( Buffer b [, Number radix [, Number begin [, Number end ] ] ] ) : Number

/*
 * Parse a Buffer that contains a string representation of an integer or float Number.
 * If radix is not specified, it defaults to 10; possible radix value range
 * is between 2 and 16.
 * If begin or end are not specified, it parses the entire Buffer.
 */
Abaco#parseFloat( Buffer b [, Number radix [, Number begin [, Number end ] ] ] ) : Number

/*
 * A strict parseFloat, it returns NaN if the number parsed, contains some symbols
 * that are not allowed for the current radix alphabet.
 */
Abaco#xparseFloat( Buffer b [, Number radix [, Number begin [, Number end ] ] ] ) : Number

/*
 * Parse a list of Buffer as integers.
 */
Abaco#parseIntArray( Array buffers [, Number radix ] ) : Array

/*
 * Parse a list of Buffer as floats.
 */
Abaco#parseFloatArray( Array buffers [, Number radix ] ) : Array

```

------------------------------------------------------------------------


### MIT License

> Copyright (c) 2014-present < Guglielmo Ferri : 44gatti@gmail.com >

> Permission is hereby granted, free of charge, to any person obtaining
> a copy of this software and associated documentation files (the
> 'Software'), to deal in the Software without restriction, including
> without limitation the rights to use, copy, modify, merge, publish,
> distribute, sublicense, and/or sell copies of the Software, and to
> permit persons to whom the Software is furnished to do so, subject to
> the following conditions:

> __The above copyright notice and this permission notice shall be
> included in all copies or substantial portions of the Software.__

> THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
> EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
> MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
> IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
> CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
> TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
> SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.