Skip to content
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

implement filtering #74

Closed
plastikfan opened this issue Jul 4, 2024 · 0 comments · Fixed by #83
Closed

implement filtering #74

plastikfan opened this issue Jul 4, 2024 · 0 comments · Fixed by #83
Assignees
Labels
feature New feature or request

Comments

@plastikfan
Copy link
Contributor

plastikfan commented Jul 4, 2024

The filters defined here will supercede the legacy ones defined in extendio by allowing muliple filters to be defined as a single overall mother filter. The mother filter will use its constituents by combining them into a mathematical expression. This will allow a filters to be composed together into an expression, for example:

(filter1 && filter2) || filter3

each of these constituent filters are in themselves reg-exes.

Need to consider using a 3rd party mathematical expression parser for example DOC: math parser for Go, ARTICLE. Actually this is a paid one, so you'll have to find another.

Perhaps we roll our own version. Ginkgo allows for expressions to be used in conditionally selecting tests by labels to be run.

And here's a stackoverflow question

We can just use the parser in the go standard library (go/parser, go/ast); in particluar, see ParseExpr For now, we just need to implement vanilla filters but make sure we can add an expression based filter later on.

So we have the following types of vanilla filters:

  • regex
  • glob
  • poly

... and then we have an expression filter which can combine any vanilla filters into a boolean expression

Define an internal version of hooks that we'll call interceptors. This will enable us to keep filtering code out of the navigator and remain in the filter plugin as required. We cant use a life-cycle ebent because the filtering iis an internal affair that shouldnt be exposed to the client. We also can't use a bus event because we need the plugin to provide an internal operation; filter the children, but bus events are an output only mechanism. Hence we need internal hooks/interceptors.

@plastikfan plastikfan added the feature New feature or request label Jul 4, 2024
@plastikfan plastikfan self-assigned this Jul 4, 2024
plastikfan added a commit that referenced this issue Jul 12, 2024
plastikfan added a commit that referenced this issue Jul 12, 2024
plastikfan added a commit that referenced this issue Jul 12, 2024
plastikfan added a commit that referenced this issue Jul 16, 2024
plastikfan added a commit that referenced this issue Jul 16, 2024
plastikfan added a commit that referenced this issue Jul 16, 2024
plastikfan added a commit that referenced this issue Jul 17, 2024
plastikfan added a commit that referenced this issue Jul 17, 2024
plastikfan added a commit that referenced this issue Jul 17, 2024
plastikfan added a commit that referenced this issue Jul 17, 2024
@plastikfan plastikfan linked a pull request Jul 17, 2024 that will close this issue
plastikfan added a commit that referenced this issue Jul 17, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
feature New feature or request
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant