https://github.com/apsavin/micromys
Helper for IDE-like search widgets implementations
https://github.com/apsavin/micromys
Last synced: over 1 year ago
JSON representation
Helper for IDE-like search widgets implementations
- Host: GitHub
- URL: https://github.com/apsavin/micromys
- Owner: apsavin
- License: mit
- Created: 2020-02-02T14:04:58.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2022-02-13T00:17:11.000Z (over 4 years ago)
- Last Synced: 2025-02-28T15:08:29.424Z (over 1 year ago)
- Language: JavaScript
- Size: 267 KB
- Stars: 4
- Watchers: 3
- Forks: 0
- Open Issues: 7
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Micromys
A tiny tool that helps to find strings in pre-defined dictionary by user input.
It uses algorithm similar to one that IDEs use when user looks for a file by some parts of the file's name.
For example, it finds string `aTinyTool` when input is `att`.
## Installation
`yarn add micromys` or `npm install micromys`
## Usage
### Basic
```js
import { createSearchFunction } from 'micromys';
const search = createSearchFunction(['myFavoriteFile', 'i_love_underscores']);
const searchResults = search('ilo');
console.log(searchResults);
// [{
// sentence: 'i_love_underscores',
// highlights: [
// { start: 0, end: 0 },
// { start: 2, end: 3 },
// ],
// }]
```
### Advanced
You can think of this module as of a constructor.
Feel free to import any parts of `micromys` and to build something new from them.
You can start from `createSearchFunction.js` - the place that wires all the sub parts.
For example, you can provide your own custom `isLetter` function in order to add support for languages with non-latin alphabets.
### Highlighting
In order to simplify highlighting implementation there is `highlightSentence` function.
```js
import { highlightSentence } from 'micromys/src/highlightSentence';
const highlighted = highlightSentence({
sentence: 'some words',
highlights: [{ start: 0, end: 3 }],
highlight: (text) => `${text}`,
}).join('');
console.log(highlighted); // 'some words'
```
### CommonJS support
If you need to `require` instead of `import`, use `require('micromys/cjs');`
## Limitations
By default `micromys` supports only latin alphabet. If you need more, see `Advanced` section above.