1.0.1 • Published 3 years ago

stranges v1.0.1

Weekly downloads
-
License
Apache-2.0
Repository
github
Last release
3 years ago

Stranges

An advanced number range parser. It parses number ranges from string.

test

Installation

npm install stranges

Features

  • Parse single and multiple ranges. e.g. 1-10,20-30
  • Parse inverted range. e.g. 10-1
  • Returns an Iterator instead of an Array which makes thing faster when iterate over million of records.
  • Reduce memory usage.

Parse single range

import parse from 'stranges';

const iterator = parse('0-9'); // Symbol.iterator

for (const num of iterator) {
  console.log(num);
}

// => 0
// => 1
// => 2
// => 3
// => 4
// => 5
// => 6
// => 7
// => 8
// => 9

Parse multiple ranges

import parse from 'stranges';

const iterator = parse('0-3,3-0'); // Symbol.iterator

for (const num of iterator) {
  console.log(num);
}

// => 0
// => 1
// => 2
// => 3
// => 3
// => 2
// => 1
// => 0

Calculate Length of Ranges

import { length } from 'stranges';

length('0-9,20-29')
// => 20

Parse as an Array

Allocate an array filled with values.

import { parseAsArray } from 'stranges';

parseAsArray('0-10')
// => [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

Types

/**
 * Calculate total count of ranges.
 * @param input a range string
 * @param separator a separator use to split each range.
 * @returns a total count of ranges.
 */
declare function length(input: string, separator?: string): number;
/**
 * Create an array filled with range values.
 * @param input a range string
 * @param separator a separator use to split each range.
 * @returns an array filled with range values.
 */
declare function parseAsArray(input: string, separator?: string): number[];
/**
 * Create an iterator of ranges.
 * @param input a range string
 * @param separator a separator use to split each range.
 * @returns an iterator of each number
 */
declare function parse(input: string, separator?: string): Generator<number>;

export { parse as default, length, parseAsArray };
1.0.1

3 years ago

1.0.0

3 years ago

0.0.3

3 years ago

0.0.2

3 years ago