New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

fuzzyfinder

Package Overview
Dependencies
Maintainers
1
Versions
9
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

fuzzyfinder

  • 1.4.2
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
2
increased by100%
Maintainers
1
Weekly downloads
 
Created
Source

fuzzyfinder

Fuzzyfinder allows to search a dataset with partial input. It also handles the highlighting of the matches.

It is similar to the file search feature of Sublime Text or Atom.

There is an example react app demonstrating the module.

Installation

$ npm install fuzzyfinder # or yarn add fuzzyfinder

Usage

// Import the module
import fuzzyfinder from 'fuzzyfinder';

// Create an instance
const ff = new fuzzyfinder('<b>', '</b>');

// Test data
const data = [
  'absolute', 'absolutely', 'absorb', 'abuse', 'academic', 'accept',
  'access', 'accident', 'accompany', 'accomplish', 'according',
  'account', 'accurate', 'accuse', 'achieve', 'achievement',
  // ...
];

// Perform a search
let results = ff.search('abs', data);

/*
 * Output:
 * [{
 *   score: 123,
 *   text: '<b>a</b><b>b</b><b>s</b>olute'
 * }, {
 *   score: 123,
 *   text: '<b>a</b><b>b</b><b>s</b>olutely'
 * }, {
 *   ...
 * }]
 */

API

Methods configuration

A configuration object can be passed to both search and match methods. Here is the default one:

{
  highlight: false, // Generate the highlighted subject ?
  outputFull: false, // Output the whole subject ?
  getter: obj => obj, // The getter method allowing to extract the string from the subject
}
{ highlight: true, ... }

Enables the highlighting on the output. Only the text field will be highlighted, the subject object, if passed, will be returned unaltered.

{ outputFull: true, getter: obj => obj.name, ... }

If outputFull is set to true, output the matched subject too.

If the search subject isn't an array of string, but for example [{ product: 'Banana', price: 1.23 }, { product: 'Meat', price: 10.67 }], you will have to provide a getter function. This function allow the engine to extract the right string for each of the objects of the array.

For example:

let data = [{ product: 'Banana', price: 1.23 }, { product: 'Meat', price: 10.67 }];

ff.search('baaa', data, {
  outputFull: true,
  getter: obj => obj.product,
});

/* Outputs:
 * [{
 *   score: 123,
 *   text: 'Banana',
 *   subject: {
 *     product: 'Banana',
 *     price: 1.23
 *   }
 * }]
 */

 ff.search('baaa', data, {
   outputFull: false,
   getter: obj => obj.product,
 });

 /* Outputs:
  * [{
  *   score: 123,
  *   text: 'Banana'
  * }]
  */

Performing a search on a list of values

search(string needle, array haystack [, options = {}])

It is probably the most useful method of the class, it searches the dataset and return the matches.

haystack can be an array of string, or an array of objects. If it is an array of objects, the getter method has to be set to allow the engine to know on what field of the object to search.

Finding out whether a string matches another

match(string search, string subject [, options = {}])

It is the method used by search. It returns false if there is no match, or a match object if there is a match.

ff.match('foo', 'foobar'); // -> { text: 'foobar', score: 123 }
ff.match('baz', 'foobar'); // -> false
ff.match('foo', 'foobar', { highlight: true }); // -> { text: '<f><o><o>bar', score: 123 }
ff.match('baz', 'foobar', { highlight: true }); // -> false

Setting the opening/closing tags

constructor(string openTag = '<b>', string closeTag = '</b>')
ff.setOpenTag(string tag)
ff.setCloseTag(string tag)

The tags can be set at the moment the finder is instantiated or after that with the two setters.

FAQs

Package last updated on 28 Aug 2017

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc