-
Notifications
You must be signed in to change notification settings - Fork 33
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Mas d31 i433re2capture #438
Conversation
Allow for a capturing regular expression to be passed with a filter function that will filter based on the captured output. Also allows a specific captured term to be returned as the returned term (rather than the whole index term)
First draft of allowing an externally provided comparison expression to be validated, parsed and evaluated
Required as re2 can only output binary not string in captures.
Allow for capture with either delimited index terms, or with regex capture, and then filtering of captured attributes using a logical expression. The xref check `locals_not_used` is now ignored due to issues with auto-generated module.
Allow for the generation of projected attributes from an index term
Allow for additional functions in eval. Change the leveled query API to generalise application of eval/filter expressions.
Remove `capture` option - as all can be achieved via eval/filter.
@@ -112,10 +112,17 @@ | |||
{index_specs(), infinity|integer()}. % {KeyChanges, TTL} | |||
-type maybe_lookup() :: | |||
lookup|no_lookup. | |||
-type actual_regex() :: | |||
reference()|{re_pattern, term(), term(), term(), term()}. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
is there a reason not to use the opaque type re:mp()
instead of re_patten...
?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Term, Key, AttrMap) -> | ||
TermToSplit = term_to_process(InKey, Term, Key, AttrMap), | ||
CptTerms = string:split(TermToSplit, Delim, all), | ||
L = min(length(CptTerms), length(ExpKeys)), |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
in OTP 26 there is now a How
parameter for zip. Using trim
would reduce this code. But only introduced for OTP26.
Replaced with #440 |
Allow for evaluation and filtering of 2i terms.
Eval: Have a language of functions whereby, a map of Key/Value pairs can be extracted by applying those functions in a pipeline.
Filter: Have a language of functions and operators to apply a logic expression to determine if a term matches a filter, based on the entries in the map output from the eval pipeline.
The aim is to have an alternative to regular expression filtering in Riak. Sometimes the auto-generation of regular expressions become complex, and somethings (such as date ranges) and potentially impossible. The aim of the filter expression is to do this in a more natural language.