Skip to content

Commit 2b65fb9

Browse files
author
Sébastien Geiser
committed
Add syntax to filter dirs with regex
1 parent 5fa4acc commit 2b65fb9

File tree

2 files changed

+17
-2
lines changed

2 files changed

+17
-2
lines changed

RegexDialog/RegExToolDialog.xaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -844,7 +844,7 @@
844844
<Label Content="_Filters"
845845
VerticalAlignment="Center"
846846
Padding="3,0"
847-
ToolTip="File Patterns supporting * and ? wildcards.Multi patterns separated by [,] char"/>
847+
ToolTip="File Patterns supporting * and ? wildcards.Multi patterns separated by [,] char. Begin and end the pattern with / to filter with a Regex and double // to exclude paths after adding it."/>
848848
<ComboBox x:Name="SpecifiedDirectoryTextSourceFilterComboBox"
849849
Text="{Binding TextSourceDirectorySearchFilter, UpdateSourceTrigger=PropertyChanged}"
850850
ItemsSource="{Binding TextSourceDirectorySearchFilterHistory}"

RegexDialog/RegExToolDialog.xaml.cs

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -976,7 +976,22 @@ private List<string> GetFiles()
976976

977977
filter.Split(';', ',', '|')
978978
.ToList()
979-
.ForEach(pattern => result.AddRange(Directory.GetFiles(Config.Instance.TextSourceDirectoryPath, pattern, Config.Instance.TextSourceDirectorySearchSubDirectories ? SearchOption.AllDirectories : SearchOption.TopDirectoryOnly)));
979+
.ForEach(pattern =>
980+
{
981+
if (pattern.StartsWith("//") && pattern.EndsWith("//"))
982+
{
983+
result.RemoveAll(path => Regex.IsMatch(path, pattern.Trim('/'), RegexOptions.IgnoreCase));
984+
}
985+
else if (pattern.StartsWith("/") && pattern.EndsWith("/"))
986+
{
987+
result.AddRange(Directory.GetFiles(Config.Instance.TextSourceDirectoryPath, "*", Config.Instance.TextSourceDirectorySearchSubDirectories ? SearchOption.AllDirectories : SearchOption.TopDirectoryOnly)
988+
.Where(path => Regex.IsMatch(path, pattern.Trim('/'), RegexOptions.IgnoreCase)));
989+
}
990+
else
991+
{
992+
result.AddRange(Directory.GetFiles(Config.Instance.TextSourceDirectoryPath, pattern, Config.Instance.TextSourceDirectorySearchSubDirectories ? SearchOption.AllDirectories : SearchOption.TopDirectoryOnly));
993+
}
994+
});
980995

981996
return result;
982997
}

0 commit comments

Comments
 (0)