https://github.com/brycebaril/through2-filter
A through2 wrapper to create an Array.prototype.filter analog for streams
https://github.com/brycebaril/through2-filter
Last synced: 6 months ago
JSON representation
A through2 wrapper to create an Array.prototype.filter analog for streams
- Host: GitHub
- URL: https://github.com/brycebaril/through2-filter
- Owner: brycebaril
- License: mit
- Created: 2013-08-06T04:45:00.000Z (over 12 years ago)
- Default Branch: master
- Last Pushed: 2024-04-12T18:36:28.000Z (about 2 years ago)
- Last Synced: 2024-04-14T18:08:00.619Z (almost 2 years ago)
- Language: JavaScript
- Size: 14.6 KB
- Stars: 35
- Watchers: 2
- Forks: 4
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-micro-npm-packages-zh - through2-filter
- awesome-micro-npm-packages - through2-filter - A through2 to create an Array.prototype.filter analog for streams. (Modules / Stream)
- awesome-micro-npm-packages - through2-filter - A through2 to create an Array.prototype.filter analog for streams. (Modules / Stream)
- fucking-awesome-micro-npm-packages - through2-filter - A through2 to create an Array.prototype.filter analog for streams. (Modules / Stream)
README
through2-filter
===============
[](https://nodei.co/npm/through2-filter/)
This is a super thin wrapper around [through2](http://npm.im/through2) that works like `Array.prototype.filter` but for streams.
For when through2 is just too verbose :wink:
Note you will **NOT** be able to alter the content of the chunks. This is intended for filtering only. If you want to modify the stream content, use either `through2` or `through2-map`.
```js
var filter = require("through2-filter")
var skip = filter(function (chunk) {
// skip buffers longer than 100
return chunk.length < 100
})
// vs. with through2:
var skip = through2(function (chunk, encoding, callback) {
// skip buffers longer than 100
if (chunk.length < 100) this.push(chunk)
return callback()
})
// Then use your filter:
source.pipe(skip).pipe(sink)
// Additionally accepts `wantStrings` argument to conver buffers into strings
var alphanum = new RegExp("^[A-Za-z0-1]+$")
var scrub = filter({wantStrings: true}, function (str) {
return alphanum.exec(str)
})
// Works like `Array.prototype.filter` meaning you can specify a function that
// takes up to two* arguments: fn(element, index)
var skip10 = filter(function (element, index) {
return index > 10
})
```
*Differences from `Array.prototype.filter`:
* No third `array` callback argument. That would require realizing the entire stream, which is generally counter-productive to stream operations.
* `Array.prototype.filter` doesn't modify the source Array, which is somewhat nonsensical when applied to streams.
API
---
`require("through2-filter")([options], fn)`
---
Create a `through2-filter` instance that will call `fn(chunk)`. If `fn(chunk)` returns "true" the chunk will be passed downstream. Otherwise it will be dropped.
`require("through2-filter").ctor([options], fn)`
---
Create a `through2-filter` Type that can be instantiated via `new Type()` or `Type()` to create reusable spies.
`require("through2-filter").obj([options], fn)`
---
Create a `through2-filter` that defaults to `objectMode = true`.
`require("through2-filter").objCtor([options], fn)`
---
Create a `through2-filter` Type that defaults to `objectMode = true`.
Options
-------
* wantStrings: Automatically call chunk.toString() for the super lazy.
* all other through2 options
LICENSE
=======
MIT