{"repo":"timbray/quamina","free":true,"listed":false,"github":"https://github.com/timbray/quamina","clone":"git clone https://github.com/timbray/quamina.git","description":"Home of Quamina, a fast pattern-matching library in Go","language":"Go","stars":503,"topics":["event-driven","go","golang","json","events"],"license":"Apache-2.0","category":"dev-tools","readme_excerpt":"Quamina Fast pattern-matching library Quamina implements a data type with APIs to create an instance and add multiple Patterns to it, and then query data objects called Events to discover which of the Patterns match the fields in the Event. In typical cases, Quamina can match millions of Events per second, even with many Patterns added to the instance. Quamina has no run-time dependencies beyond built-in Go libraries. Quamina welcomes contributions. Status This is version 2.0.1 of Quamina. In future, the API will be changed only additively. Note that we have documented more APIs than are actually fully implemented, with the intent of showing direction. Patterns Consider the following JSON Event, taken from the example in RFC 8259: The following Patterns would match it: The syntax and semantics of Patterns are fully specified in Patterns in Quamina. The structure of a Pattern, in terms of field names and nesting, must be the same as the structure of the Event to be matched. The field values are always given as an array; if any element of the array matches the value in the Event, the match is good. If the field in the Event is array-valued, matching is true if the intersection of the arrays is non-empty. Fields which are not mentioned in the Pattern will be assumed to match, but all fields mentioned must match. So the semantics are effectively an OR on each field's values, but an AND on the field names. The \"exists\":true and \"exists\":false patterns have corner cases; details ar","default_branch":null,"files":null,"tree":[],"storefront":"/r/timbray","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/timbray/quamina/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}