0.2.0 • Published 9 years ago

search-stream v0.2.0

Weekly downloads
4
License
MIT
Repository
github
Last release
9 years ago

Search Stream

This project aims to create an easy and fast way to search an array or stream of objects given some text to search for or a regular expression.

npm install search-stream

Spec

var searchStream = require('search-stream');

Returns a function to create an instance of search stream.

  var options = {
    caseSensitive: false,
    searchKeys: ['key1','key2']
  };
  var search = searchStream(options);

Creates a search function with specified options. Case sensitivity is off by default. Search keys allows you to specify which keys of the object should be searched including nested keys. Default is none which allows all keys to be searched.

Perform the search on an array of objects:

var result = search(filter, objectArray);

Or on an object stream:

var resultStream = readableStream().pipe(search(filter));

The filter parameter is either a string to search for or a regular expression.

Examples

Given an array of objects like this:

  var objs = [{
    "name": "Twelve Monkeys",
    "outline": "In a future world devastated by disease, a convict is sent back in time to gather information about the man-made virus that wiped out most of the human population on the planet.",
    "rating": 8.1,
    "director": "Terry Gilliam",
    "year": 1995,
    "stars": [
      "Bruce Willis",
      "Madeleine Stowe",
      "Brad Pitt"
    ],
    "runtime": 129,
    "genre": [
      "Mystery",
      "Sci-Fi",
      "Thriller"
    ],
    "certificate": "R",
    "date": "1979-02-25T10:29:29+05:30",
    "actor": "Bruce Willis",
    "id": 200
  }]

Here's how you search them and get back an array of objects with just the ones that match:

  var searchStream = require('search-stream');
  var search = searchStream();

  var searchedObjs = search('Monkeys', objs);

The search will also look in nested objects and arrays:

  var searchedObjs = search('Sci-Fi', objs);

Search will also function as a transform stream only allowing objects that match the search through:

  var search = searchStream();
  var readableStream = getReadableStream();
  var destStream = readableStream.pipe(search('Bruce Willis'));

The filter parameter can also be a regular expression:

  var destStream = dataStream.pipe( search(/(.+,){5}/g) );