Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/azu/search-query-tester
Test object with search query syntax.
https://github.com/azu/search-query-tester
github query search syntax tester
Last synced: about 2 months ago
JSON representation
Test object with search query syntax.
- Host: GitHub
- URL: https://github.com/azu/search-query-tester
- Owner: azu
- License: mit
- Created: 2017-11-11T04:49:59.000Z (about 7 years ago)
- Default Branch: master
- Last Pushed: 2017-11-11T05:10:47.000Z (about 7 years ago)
- Last Synced: 2024-10-04T16:36:44.334Z (4 months ago)
- Topics: github, query, search, syntax, tester
- Language: TypeScript
- Size: 15.6 KB
- Stars: 2
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# search-query-tester [![Build Status](https://travis-ci.org/azu/search-query-tester.svg?branch=master)](https://travis-ci.org/azu/search-query-tester)
Test object with search query syntax.
## Search query syntax
`search-query-tester` use following library:
- [polm/philtre: Search objects with a familiar syntax.](https://github.com/polm/philtre "polm/philtre: Search objects with a familiar syntax.")
## Install
Install with [npm](https://www.npmjs.com/):
npm install search-query-tester
## Usage
### API
```ts
export declare class SearchQueryTester {
/**
* Return true if the `searchQuery` with the `data`.
*/
test(searchQuery: string, data: T): boolean;
}```
### Example
```ts
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](https://github.com/polm/philtre "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` |## Changelog
See [Releases page](https://github.com/azu/search-query-tester/releases).
## 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](https://github.com/azu/search-query-tester/issues).
1. Fork it!
2. Create your feature branch: `git checkout -b my-new-feature`
3. Commit your changes: `git commit -am 'Add some feature'`
4. Push to the branch: `git push origin my-new-feature`
5. Submit a pull request :D## Author
- [github/azu](https://github.com/azu)
- [twitter/azu_re](https://twitter.com/azu_re)## License
MIT © azu