Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/umayr/slq
Perform multi-level logical operations as a query over javascript object and/or array.
https://github.com/umayr/slq
Last synced: about 15 hours ago
JSON representation
Perform multi-level logical operations as a query over javascript object and/or array.
- Host: GitHub
- URL: https://github.com/umayr/slq
- Owner: umayr
- License: mit
- Created: 2016-04-28T16:14:27.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2016-06-07T11:04:28.000Z (over 8 years ago)
- Last Synced: 2024-10-07T13:16:35.540Z (about 1 month ago)
- Language: JavaScript
- Homepage:
- Size: 15.6 KB
- Stars: 3
- Watchers: 3
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
## `SLQ` [![Build Status](https://travis-ci.org/umayr/slq.svg?branch=master)](https://travis-ci.org/umayr/slq)
>Perform multi-level logical operations as a query over javascript object and/or array.### Install
```
λ npm install --save slq
```### Usage
```javascript
// require the library
const SLQ = require('slq');
// instantiate class object with either an object or an array
// for objects, it places the value for every key in the expression to evaluate
// valid existent key should be provided in the query
// for example, create instance with an object:
let src = new SLQ({
foo: true,
bar: false,
baz: false
});
// and, go wild
src.query('foo AND bar'); // false
src.query('foo AND NOT bar'); // true
src.query('NOT (foo AND NOT bar)'); // false
src.query('(foo AND bar) AND baz'); // false
src.query('NOT(NOT((foo AND bar) AND baz))'); // false
src.query('foo AND (bar AND baz)'); // false
src.query('foo AND (foo AND (bar AND baz))'); // false
src.query('foo AND (foo AND foo)'); // true
src.query('foo AND (foo OR bar)'); // true
src.query('foo OR (foo AND bar)'); // true
src.query('baz OR (foo AND (foo OR (foo AND (bar OR (foo AND (baz OR foo))))))'); // true
// there's no limit to how deep you want to go
src.query('NOT baz AND (foo AND (foo OR (foo AND (bar OR (foo AND (baz OR foo))))))'); // true
// for arrays, it checks if provided key is in the array or not
// for example:
let src = new SLQ(['foo', 'bar', 'unicorn']);
src.query('foo AND bar AND unicorn'); // true
src.query('NOT(foo AND bar AND unicorn)'); // false
src.query('NOT(poo OR meh AND lol)'); // true
src.query('(NOT(NOT(yes))) OR NOT(foo AND unicorn)'); // false
src.query('(NOT(NOT(unicorn))) OR NOT(meh AND unicorn)'); // true
```### License
[MIT](https://github.com/umayr/slq/blob/master/LICENSE)