Security News
Fluent Assertions Faces Backlash After Abandoning Open Source Licensing
Fluent Assertions is facing backlash after dropping the Apache license for a commercial model, leaving users blindsided and questioning contributor rights.
#zerkel An adzerk-based query-ish language.
###Language Zerkel provides primitive integer and string literals, identifiers, sets, and a selection of boolean operators:
operator/type | comment | examples |
---|---|---|
integers | syntax | 42 , -7 |
strings | syntax | "foo" , "C:\\\\Windows\\System32" , `"^(foo |
variables | syntax | count , _foo_bar , $location.postalCode |
. | property accessor | $location.postalCode , foo.bar.baz |
[, ] | set construction | [42, "foo"] |
(, ) | expression grouping | x < 100 AND (y < 50 OR z < 10) |
= | foo = 42 | |
<> | not equal | foo <> "bar" |
=~ | regex match | `foo =~ "^(some |
!~ | not regex match | `foo !~ "^(some |
> | foo > 42 | |
< | foo < 42 | |
>= | foo >= 42 | |
<= | foo <= 42 | |
AND | foo = 42 AND bar < 100 | |
OR | foo = 42 OR bar < 100 | |
NOT | NOT (bar =~ "^foo") | |
LIKE | wildcard match | foo LIKE "ba*" |
CONTAINS | set 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=
###License Apache 2.0
FAQs
A compiler for the zerkel language
We found that zerkel demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 4 open source maintainers collaborating on the project.
Did you know?
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.
Security News
Fluent Assertions is facing backlash after dropping the Apache license for a commercial model, leaving users blindsided and questioning contributor rights.
Research
Security News
Socket researchers uncover the risks of a malicious Python package targeting Discord developers.
Security News
The UK is proposing a bold ban on ransomware payments by public entities to disrupt cybercrime, protect critical services, and lead global cybersecurity efforts.