search-query-tester
v1.0.1
Published
Test object with search query syntax.
Downloads
6
Maintainers
Readme
search-query-tester
Test object with search query syntax.
Search query syntax
search-query-tester
use following library:
Install
Install with npm:
npm install search-query-tester
Usage
API
export declare class SearchQueryTester<T extends object> {
/**
* Return true if the `searchQuery` with the `data`.
*/
test(searchQuery: string, data: T): boolean;
}
Example
import { SearchQueryTester } from "search-query-tester";
const tester = new SearchQueryTester();
const data = {
id: "idValue",
title: "titleValue",
author: "authorValue",
body: "bodyValue"
};
// search all property by default
assert.ok(tester.test("idValue", data));
assert.ok(tester.test("titleValue", data));
assert.ok(tester.test("authorValue", data));
assert.ok(tester.test("bodyValue", data));
// "AND" operator
assert.ok(tester.test("idValue AND titleValue", data));
// "OR" operator
assert.ok(tester.test("idValue OR noMatchValue", data));
// "-" operator
assert.ok(tester.test("bodyValue -notMatchValue", data));
Supported Keywords
Currently, It is same syntax with Philtre.
Note that except for values before a colon in keywords using them (which must match the regex [A-z]*
), anything may be quoted to preserve whitespace or otherwise special characters.
| keyword | effect |
| --- | --- |
| (default) | non-special words check for a string match on every field of the object. |
| :has:[something]
| true if the object has a field named something
|
| :is:[something]
| same as :has:
|
| [key]:[value]
| true if value
equals the key
property |
| AND
| does nothing (it's the default) |
| OR
| logical OR of the conditions on either side |
| NOT
| negates the next keyword |
| -[something]
| negates the next keyword; unlike not
doesn't need a space |
| (
and )
| allows grouping of terms |
| #[xxx]
| true if the .tags
property contains xxx
|
| :before:[xxx]
| true if the .date
property is less than xxx
|
| :after:[xxx]
| true if the .date
property is greater than xxx
|
| :sort:[field]
| sorts on field
|
| :sortr:[field]
| sorts on field
in the order opposite :sort:
|
| :limit:[count]
| only shows up to count
results |
Changelog
See Releases page.
Running tests
Install devDependencies and Run npm test
:
npm i -d && npm test
Contributing
Pull requests and stars are always welcome.
For bugs and feature requests, please create an issue.
- Fork it!
- Create your feature branch:
git checkout -b my-new-feature
- Commit your changes:
git commit -am 'Add some feature'
- Push to the branch:
git push origin my-new-feature
- Submit a pull request :D
Author
License
MIT © azu