Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

zerkel

Package Overview
Dependencies
Maintainers
4
Versions
17
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

zerkel

A compiler for the zerkel language

  • 1.8.3
  • latest
  • npm
  • Socket score

Version published
Weekly downloads
16
increased by700%
Maintainers
4
Weekly downloads
 
Created
Source

#zerkel An adzerk-based query-ish language.

###Language Zerkel provides primitive integer and string literals, identifiers, sets, and a selection of boolean operators:

operator/typecommentexamples
integerssyntax42, -7
stringssyntax"foo", "C:\\\\Windows\\System32", `"^(foo
variablessyntaxcount, _foo_bar, $location.postalCode
.property accessor$location.postalCode, foo.bar.baz
[, ]set construction[42, "foo"]
(, )expression groupingx < 100 AND (y < 50 OR z < 10)
=foo = 42
<>not equalfoo <> "bar"
=~regex match`foo =~ "^(some
!~not regex match`foo !~ "^(some
>foo > 42
<foo < 42
>=foo >= 42
<=foo <= 42
ANDfoo = 42 AND bar < 100
ORfoo = 42 OR bar < 100
NOTNOT (bar =~ "^foo")
LIKEwildcard matchfoo LIKE "ba*"
CONTAINSset membership / substring["foo", "bar"] CONTAINS "foo", "foobar" CONTAINS "foo"

Thus, queries may be written like:

count > 43 and (user = "bob" or user = "alice")
keywords contains "awesome"

All operators are available in upper and lowercase forms.

###Demo

Check out the live Zerkel scratchpad demo app and try some zerkel queries in your browser.

###Usage Queries can executed in coffeescript/javascript using the zerkel module, like so:

zerkel = require 'zerkel'

query = 'count > 43 and (user = "bob" or user = "alice")'
matchFn = zerkel.compile query
matchFn {count: 50, user: 'bob'} # true
matchFn {count: 12, user: 'alice'} # false
matchFn {count: 50, user: 'George Michael'} # terribly, unfortunately, false

You can also access properties on passed in objects, like so:

zerkel = require 'zerkel'

query = 'user.location = "open field west of a white house"'
matchFn = zerkel.compile query
matchFn {user: {name: 'bob', location: 'open field west of a white house'}} # true
matchFn {user: {name: 'alice', location: 'middle earth'}} # false

###Gzip Set the parser.MIN_GZIP_SIZE to a number, and if the length of the compiled JavaScript is greater than that it will be gzipped and base64 encoded, with GZ: prepended. The zerkel#makePredicate function will unzip automatically as necessary.

parser = require 'zerkel-parser'

parser.MIN_GZIP_SIZE = 50
parser.parse 'foo = 42'              # _helpers['getIn'](_env, 'foo')==42'
parser.parse '[42, 43] contains foo' # GZ:H4sIAAAAAAAAA9OINjHSMTGOVVODMvQy81JSK/zTNOIzUnMKUouKo9XTU0s889RjNeJT88p0FNTT8vPVNTUV7GwVDDQBm8CsuD8AAAA=

###Status Build Status

###License Apache 2.0

FAQs

Package last updated on 21 Jul 2016

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc