slq

Perform simple logical queries on javascript object and arrays

Usage no npm install needed!

<script type="module">
  import slq from 'https://cdn.skypack.dev/slq';
</script>

README

SLQ Build Status

Perform multi-level logical operations as a query over javascript object and/or array.

Install

  λ npm install --save slq

Usage

  // 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