Class MetaFilter

java.lang.Object
org.jbehave.core.embedder.MetaFilter

public class MetaFilter extends Object

Allows filtering on meta info.

A filter is uniquely identified by its String representation which is parsed and matched by the MetaFilter.MetaMatcher to determine if the Meta is allowed or not.

The MetaFilter.DefaultMetaMatcher interprets the filter as a sequence of any name-value properties (separated by a space), prefixed by "+" for inclusion and "-" for exclusion. E.g.:

 MetaFilter filter = new MetaFilter(
         "+author Mauro -theme smoke testing +map *API -skip");
 filter.excluded(new Meta(asList("map someAPI")));
 

The use of the MetaFilter.GroovyMetaMatcher is triggered by the prefix "groovy:" and allows the filter to be interpreted as a Groovy expression.

 MetaFilter filter = new MetaFilter(
         "groovy: (a == '11' | a == '22') && b == '33'");
 

Custom MetaFilter.MetaMatcher instances can also be provided as a map, indexed by the prefix used in the filter content:

 Map<String, MetaMatcher> customMatchers = new HashMap<>();
 customMatchers.put("ruby:", new RubyMetaMatcher());
 MetaFilter filter = new MetaFilter("ruby: # some ruby script", customMatchers);
 

Custom MetaMatcher instances, when they are matched by the prefix of the filter content, will take precedence over the Groovy or default matchers.