1.0.1 • Published 6 years ago
search-query-tester v1.0.1
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
1.0.1
6 years ago