search-query-tester
v1.0.1
Published
Test object with search query syntax.
Downloads
19
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-testerUsage
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 testContributing
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
