https://github.com/tinyield/tinyield4ts
A Minimalistic, extensible and lazy sequence implementation for Typescript and Javascript.
https://github.com/tinyield/tinyield4ts
extensible javascript lazy minimalist node nodejs npm npm-package npmjs npmjs-packages query sequence typescript
Last synced: 15 days ago
JSON representation
A Minimalistic, extensible and lazy sequence implementation for Typescript and Javascript.
- Host: GitHub
- URL: https://github.com/tinyield/tinyield4ts
- Owner: tinyield
- License: apache-2.0
- Created: 2019-12-24T17:10:27.000Z (about 6 years ago)
- Default Branch: master
- Last Pushed: 2023-02-02T23:13:34.000Z (almost 3 years ago)
- Last Synced: 2024-04-26T18:46:10.526Z (almost 2 years ago)
- Topics: extensible, javascript, lazy, minimalist, node, nodejs, npm, npm-package, npmjs, npmjs-packages, query, sequence, typescript
- Language: TypeScript
- Homepage:
- Size: 1.07 MB
- Stars: 3
- Watchers: 3
- Forks: 0
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Tinyield4ts
[](https://badge.fury.io/js/tinyield4ts)
[](https://sonarcloud.io/dashboard?id=tinyield_tinyield4ts)
[](https://sonarcloud.io/dashboard?id=tinyield_tinyield4ts)
[](https://sonarcloud.io/dashboard?id=tinyield_tinyield4ts)
[](https://sonarcloud.io/dashboard?id=tinyield_tinyield4ts)
A _Minimalistic_, _extensible_ and _lazy_ sequence implementation for Typescript and Javascript.
## Usage
An auxiliary `collapse()` method, which merges series of adjacent elements is written
with Tinyield in the following way:
```typescript
import {Query, Traverser} from 'tinyield4ts';
function collapse(src: Query): Traverser {
return yld => {
let prev: T;
src.forEach(item => {
if (prev === undefined || prev !== item) {
prev = item;
yld(item);
}
});
};
}
```
This method can be chained in a sequence like this:
```typescript
const arrange = [7, 7, 8, 9, 9, 11, 11, 7];
const actual = [];
Query.of(arrange)
.then(n => collapse(n))
.filter(n => n % 2 !== 0)
.forEach(actual.push);
```
## Installation
```shell
$ npm i tinyield4ts
```
## License
This project is licensed under [Apache License,
version 2.0](https://www.apache.org/licenses/LICENSE-2.0)