0.0.2 • Published 1 year ago

@gmjs/value-generators v0.0.2

Weekly downloads
-
License
MIT
Repository
github
Last release
1 year ago

Value generators

This project implements value generators. Mostly, it contains functions that generate iterable values.

Installation

npm install --save @gmjs/value-generators

Usage

You can use the generators in a standalone manner:

import { range } from '@gmjs/value-generators';

for (const i of range(0, 5)) {
  console.log(i);
}
// 0
// 1
// 2
// 3
// 4

You can also use them with the applyFn function from the apply-function package:

import { applyFn } from '@gmjs/apply-function';
import { map } from '@gmjs/value-transformers';
import { index } from '@gmjs/value-generators';

const output = applyFn(
  index(5),
  map((v: number) => v + 2),
);
console.log([...output]); // using spread operator to convert iterable to array
// [2, 3, 4, 5, 6]

API

Generators

constant

Generates an iterable that yields the same value over and over again. The value is specified as the first parameter.

It has an optional count parameter that specifies how many times the value should be yielded. If not specified, the generator will yield the value infinitely.

const output = constant(5, 3);
console.log([...output]);
// [5, 5, 5]

index

Generates an iterable that yields the index of each value.

It has an optional count parameter that specifies how many times the value should be yielded. If not specified, the generator will yield the value infinitely.

const output = index(3);
console.log([...output]);
// [0, 1, 2]

ones

Generates an iterable that yields the value 1 over and over again.

It has an optional count parameter that specifies how many times the value should be yielded. If not specified, the generator will yield the value infinitely.

const output = ones(3);
console.log([...output]);
// [1, 1, 1]

range

Generates an iterable that yields a range of values.

The first parameter defined the from (starting) value, the second parameter defines the to (limit) value. The to value is not included in the range, meaning that the generator can potentially yield values in [from, to).

It has an optional step parameter that specifies the step size. If not specified, the step size is 1. Step size can be negative, in which case the generator can potentially yield values in (to, from] range, again starting with the from value.

const output = range(0, 5);
console.log([...output]);
// [0, 1, 2, 3, 4]
const output = range(1, 6, 2);
console.log([...output]);
// [1, 3, 5]
const output = range(5, 0, -1);
console.log([...output]);
// [5, 4, 3, 2, 1]

zeros

Generates an iterable that yields the value 0 over and over again.

It has an optional count parameter that specifies how many times the value should be yielded. If not specified, the generator will yield the value infinitely.

const output = zeros(3);
console.log([...output]);
// [0, 0, 0]
0.0.2

1 year ago

0.0.1

2 years ago