word-researcher

The package used to find a word inside a text using the KMP (Knuth–Morris–Pratt) algorithm


Keywords
word, search, word searcher, word finder
License
ISC
Install
npm install word-researcher@1.0.3

Documentation

Word researcher

The package aims to search a word inside a text. The tool is based on the KMP (Knuth–Morris–Pratt) algorithm.

The package came with many features like (findOne, findAll, history of search ...etc) and so many others, which some of them are already implemented, and the others will, soon.

Because of type's errors are the most common things developers encounter and deal with, I have used typescript to implement the package, which will make it more reliable to types.

Installation

Use the package manager npm

npm install word-researcher

or for yarn

yarn add word-researcher

Future features

For now, I've just created the find method, and the history of search. I am aiming to include other features rather than the ones mentioned above. The new features will be described down below :

  • Replacing the searched word in a text
  • Highlighting the searched word in text

Examples

here some examples about the tools provided by the package, I am going to listed them first with a simple description about what it is aiming to do, and then I will provide some examples clearifying their use, and how to combine them if it is possible.

This is the way how to import any tool :

    import { findOne, findAll, findAllWithSkip, history } from "word-researcher";

Description

findOne( text, word, options ) :

is used to look for only one occurence of the searched word.
@param text => string
@param word => string
@param options => Object
@returns position => number

findAll( text, word, options ) :

is used to look for all occurences of the searched word in a text.
@param text => string
@param word => string
@param options => Object
@returns position => number[]

The previous functionality may take options as an Object {}. The available options are described in the next section down below :

 options = {
    caseSensative: boolean,     # default => false
    skipXFirstResults: number,  # default => 0
    skipXLastResults: number,   # default => 0
 }

skipXFirstResults and skipXLastResults are only valid for findAllWithSkip method.

findAllWithSkip( text, word, options ) :

the main idea behind, is to offer the possibility to skip some results at the beginning or at the end of the text. Examples will be presented down below.
@param text => string
@param word => string
@param options => Object
@returns position => number[]

history.pushWord( word ) :

this function save the word in the history stack.
@param word => string

history.getPreviousWord() :

the function returns the (i-1) word's postion in the history.

history.getNextWord() :

the function may be called after using the getPreviousWord function, so it returns the word at position (i+1), until it reaches the last searched word in the history.

history.clearHistory() :

empty the history.

history.jumpToIndex( index ) :

the function returns the searched word at a certain position passed within parameter.
@param index => number
@returns => string

history.historyLength() :

the function returns the length of the history stack.
@returns => number

Note

each tool provided by this package is implemented independently of any other tool, it's up to the developers to use it the way they find it appropriate.

For example

The history and find tool are separately implemented and do not have any relation to each other, but the user is free to combine them.

import {findOne, history} from "word-researcher";

const text = "this is a new paragraph, it is used only for test";

# find the position of the word.
findOne(text, "is"); #result => 5
# and then store the word into the history
history.pushWord("is");