A file filter is responsible to filtering a list of files provided by a file catalogue or a file enumerator. It may either filter passed input files out, but it also may add new files.
The CodeXCavator core engine provides the following built-in file catalogue enumerators:
The WildCardFileFilter is responsible for either passing thru or filtering out all files, which match a given set of wild card patterns.
The set of wild card patterns can be defined by providing a configuration containing the patterns.
Example: Using and configuring the WildCardFileFilter
<Index Path="D:\Temp\TestIndex">
<FileSources>
<Catalogue Type="DirectoryFileEnumerator"
Path="D:\Programming\Projects\C#\CodeXCavator"
Recursive="True">
<Filter Type="WildCardFileFilter">
<Configuration>
<Patterns>
<Pattern>*.cs</Pattern>
<Pattern>*.xaml</Pattern>
</Patterns>
</Configuration>
</Filter>
</Catalogue>
</FileSource>
</Index>
The RegExFileFilter is responsible for either passing thru or filtering out all files, which match a given set of regular expression patterns.
The set of regular expression patterns can be defined by providing a configuration containing the patterns.
Example: Using and configuring the RegExFileFilter
<Index Path="D:\Temp\TestIndex">
<FileSources>
<Catalogue Type="DirectoryFileEnumerator"
Path="D:\Programming\Projects\C#\CodeXCavator"
Recursive="True">
<Filter Type="RegExFileFilter">
<Configuration>
<Patterns>
<Pattern>[a-z_]+\.cs</Pattern>
</Patterns>
</Configuration>
</Filter>
</Catalogue>
</FileSource>
</Index>
The AndFilter is responsible for combining the results of two ore more child filters, which means that it supports child <filter></filter> tags. It performs an intersection of the file sets returned by each child file filter. This corresponds to a boolean AND, i.e. a file must pass through all child filters in order to be accepted.
Example: Using and configuring the AndFilter
<Index Path="D:\Temp\TestIndex">
<FileSources>
<Catalogue Type="DirectoryFileEnumerator"
Path="D:\Programming\Projects\C#\CodeXCavator"
Recursive="True">
<Filter Type="AndFilter">
<Filter Type="RegExFileFilter">
<Configuration>
<Patterns>
<Pattern>[a-z_]+\.cs</Pattern>
</Patterns>
</Configuration>
</Filter>
<Filter Type="RegExFileFilter">
<Configuration>
<Patterns>
<Pattern>[0-9_]+\.cs</Pattern>
</Patterns>
</Configuration>
</Filter>
</Filter>
</Catalogue>
</FileSource>
</Index>
The OrFilter is responsible for combining the results of two ore more child filters, which means that it supports child <filter></filter> tags. It performs a union of the file sets returned by each child file filter. This corresponds to a boolean OR, i.e. a file is accepted when it passes at least one of the child filters.
Example: Using and configuring the OrFilter
<Index Path="D:\Temp\TestIndex">
<FileSources>
<Catalogue Type="DirectoryFileEnumerator"
Path="D:\Programming\Projects\C#\CodeXCavator"
Recursive="True">
<Filter Type="OrFilter">
<Filter Type="RegExFileFilter">
<Configuration>
<Patterns>
<Pattern>[a-z_]+\.cs</Pattern>
</Patterns>
</Configuration>
</Filter>
<Filter Type="RegExFileFilter">
<Configuration>
<Patterns>
<Pattern>[0-9_]+\.cs</Pattern>
</Patterns>
</Configuration>
</Filter>
</Filter>
</Catalogue>
</FileSource>
</Index>
The NotFilter is responsible for inverting the results of a single child filter. It allows only a single child <filter></filter> tag. It performs a subtraction on the original set of files and the set of files returned by the child filter. This corresponds to boolean NOT, i.e. a file is accepted only, when it does not pass the child filter.
Example: Using and configuring the NotFilter
<Index Path="D:\Temp\TestIndex">
<FileSources>
<Catalogue Type="DirectoryFileEnumerator"
Path="D:\Programming\Projects\C#\CodeXCavator"
Recursive="True">
<Filter Type="NotFilter">
<Filter Type="RegExFileFilter">
<Configuration>
<Patterns>
<Pattern>[0-9_]+\.cs</Pattern>
</Patterns>
</Configuration>
</Filter>
</Filter>
</Catalogue>
</FileSource>
</Index>
[Home][CodeXCavator Indexer][Built-in File Catalogue Enumerators][Built-in File Enumerators]
Wiki: Built-in File Catalogue Enumerators
Wiki: Built-in File Enumerators
Wiki: CodeXCavator Indexer
Wiki: Home