https://github.com/rootslab/abaco
Abaco, an ultra fast Number parser for Buffers.
https://github.com/rootslab/abaco
buffer parseint parser
Last synced: 5 months ago
JSON representation
Abaco, an ultra fast Number parser for Buffers.
- Host: GitHub
- URL: https://github.com/rootslab/abaco
- Owner: rootslab
- License: mit
- Created: 2014-04-17T16:16:24.000Z (almost 12 years ago)
- Default Branch: master
- Last Pushed: 2018-02-10T14:40:01.000Z (almost 8 years ago)
- Last Synced: 2025-08-09T00:53:38.277Z (6 months ago)
- Topics: buffer, parseint, parser
- Language: JavaScript
- Homepage:
- Size: 35.2 KB
- Stars: 5
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: Readme.md
- License: LICENSE
Awesome Lists containing this project
README
### Abaco
[](https://www.npmjs.org/package/abaco)
[](https://www.codacy.com/public/44gatti/abaco)
[](https://codeclimate.com/github/rootslab/abaco)
[](https://github.com/rootslab/abaco#mit-license)

[](http://travis-ci.org/rootslab/abaco)
[](https://david-dm.org/rootslab/abaco)
[](https://david-dm.org/rootslab/abaco#info=devDependencies)
[](http://npm-stat.com/charts.html?package=abaco)

[](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.