From 9fd6054ca1a99205d2abb6408ece747d2eddaae7 Mon Sep 17 00:00:00 2001 From: Daniel Xu Date: Fri, 16 Aug 2019 00:11:37 -0700 Subject: Support regex filters for folders It's nice to be able to filter the folders displayed in the side bar. Basic string matching can get verbose with enough folders whitelisted. Signed-off-by: Daniel Xu --- widgets/dirlist.go | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'widgets/dirlist.go') diff --git a/widgets/dirlist.go b/widgets/dirlist.go index b0807ae..c84f839 100644 --- a/widgets/dirlist.go +++ b/widgets/dirlist.go @@ -2,6 +2,7 @@ package widgets import ( "log" + "regexp" "sort" "github.com/gdamore/tcell" @@ -159,6 +160,15 @@ func (dirlist *DirectoryList) Prev() { dirlist.NextPrev(-1) } +func folderMatches(folder string, pattern string) bool { + r, err := regexp.Compile(pattern) + if err != nil { + return false + } + + return r.Match([]byte(folder)) +} + // filterDirsByFoldersConfig sets dirlist.dirs to the filtered subset of the // dirstore, based on the AccountConfig.Folders option func (dirlist *DirectoryList) filterDirsByFoldersConfig() { @@ -170,7 +180,7 @@ func (dirlist *DirectoryList) filterDirsByFoldersConfig() { var filtered []string for _, folder := range dirlist.dirs { for _, cfgfolder := range dirlist.acctConf.Folders { - if folder == cfgfolder { + if folderMatches(folder, cfgfolder) { filtered = append(filtered, folder) break } -- cgit v1.2.3