FileFind.Meshwork.Search.FileSearchFilter.Check C# (CSharp) Method

Check() public method

public Check ( SearchResult result ) : bool
result SearchResult
return bool
        public bool Check(SearchResult result)
        {
            if (!FilterValid) {
                return true;
            }

            FilterType resultFilterType = (result.Type == SearchResultType.Directory) ? FilterType.Folder : FileTypeToFilterType(result.FileListing.Type);

            if (fileTypeFilterFields[resultFilterType].Contains(this.Field) ||
                fileTypeFilterFields[FilterType.Other].Contains(this.Field))
            {
                switch (this.Field) {
                    case FileSearchFilterField.FileName:
                        switch (this.Comparison) {
                            case FileSearchFilterComparison.Contains:
                                return (result.Name.ToLower().IndexOf(this.Text.ToLower()) > -1);
                            case FileSearchFilterComparison.DoesntContain:
                                return (result.Name.ToLower().IndexOf(this.Text.ToLower()) == -1);
                            case FileSearchFilterComparison.Regexp:
                                return Regex.IsMatch(result.Name, this.text);
                        }
                        break;
                    case FileSearchFilterField.Size:
                        ulong filterSize = Common.SizeStringToBytes(this.Text);
                        switch (this.Comparison) {
                            case FileSearchFilterComparison.Equals:
                                return ((ulong)result.Size == filterSize);
                            case FileSearchFilterComparison.LessThanOrEqualTo:
                                return ((ulong)result.Size <= filterSize);
                            case FileSearchFilterComparison.GreaterOrEqualTo:
                                return ((ulong)result.Size >= filterSize);
                            default:
                                throw new Exception("Invalid filter.");
                        }
                }
            } else {
                // Ignore this filter for this result
                return true;
            }
            return true;
        }