Exemple #1
0
        private static bool CompareElement <T>(T track, PredicateString <T> pre, SearchMethods method,
                                               string[] searchstring)
        {
            switch (method)
            {
            case SearchMethods.ContainsAny:
                for (int i = 0; i < searchstring.Length; i++)
                {
                    if (pre(track, searchstring[i]))
                    {
                        return(true);
                    }
                }
                return(false);

            case SearchMethods.ContainsAll:
                for (int i = 0; i < searchstring.Length; i++)
                {
                    if (!pre(track, searchstring[i]))
                    {
                        return(false);
                    }
                }
                return(true);

            default:
                throw new InvalidOperationException("Unknown search method.");
            }
        }
Exemple #2
0
        public static IEnumerable <T> Search <T>(this IEnumerable <T> list, PredicateString <T> predicate,
                                                 SearchMethods method, params string[] searchstring)
        {
            string[] search = searchstring;
            for (int i = 0; i < search.Length; i++)
            {
                search[i] = search[i].ToLower();
            }

            if (search.Length == 0)
            {
                foreach (T element in list)
                {
                    yield return(element);
                }
            }
            else
            {
                foreach (T element in list)
                {
                    if (CompareElement(element, predicate, method, search))
                    {
                        yield return(element);
                    }
                }
            }
        }
Exemple #3
0
        public IReducedClassCollection HasName(Expression <Predicate <string> > nameFilterExpression)
        {
            var nameFilter = nameFilterExpression.Compile();

            PredicateString.Add($"has name matching '{nameFilterExpression}'");
            return(AppendCondition(c => nameFilter(c.Name)));
        }
Exemple #4
0
        public IReducedClassCollection IsDerivedFrom(Type type)
        {
            PredicateString.Add($"is derived from {type}");
            var predicate = CreateClassPredicate(type);

            return(AppendCondition(c => predicate(c.ClassType)));
        }
Exemple #5
0
        public IInterfaceRule IsDeclaredInAssembly(Expression <Predicate <Assembly> > assemblyMatchingExpression)
        {
            PredicateString.Add($"is declared in assembly '{assemblyMatchingExpression}'");
            var assemblyMatcher = assemblyMatchingExpression.Compile();

            return(AppendCondition(c => assemblyMatcher(c.AssemblyInfo.Assembly.Assembly)));
        }
Exemple #6
0
        public IInterfaceRule Is(Expression <Predicate <Type> > typeExpression)
        {
            PredicateString.Add($"is declared in assembly '{typeExpression}'");
            var typeMatcher = typeExpression.Compile();

            return(AppendCondition(c => typeMatcher(c.ClassType)));
        }
Exemple #7
0
        public IClassRule Be(Expression <Predicate <Type> > typeFilterExpression)
        {
            PredicateString.Add($"be {typeFilterExpression}");
            var typePredicate = typeFilterExpression.Compile();

            return(AppendCondition(c => typePredicate(c.ClassType)));
        }
Exemple #8
0
        public IAssemblyRule HaveName(Expression <Predicate <string> > nameFilterExpression)
        {
            PredicateString.Add($"have name matching {nameFilterExpression}");
            var nameFilter = nameFilterExpression.Compile();

            return(AppendCondition(r => nameFilter(r.Name)));
        }
Exemple #9
0
        public IClassRule HaveName(Expression <Predicate <string> > nameFilterExpression)
        {
            PredicateString.Add($"have a name matching '{nameFilterExpression}'");
            var nameFilter = nameFilterExpression.Compile();

            return(AppendCondition(c => nameFilter(c.Name)));
        }
Exemple #10
0
        public IClassRule BeInAssembly(Expression <Predicate <Assembly> > assemblyFilterExpression)
        {
            PredicateString.Add($"be in an assembly matching '{assemblyFilterExpression}'");
            var filter = assemblyFilterExpression.Compile();

            return(AppendCondition(c => filter(c.AssemblyInfo.Assembly.Assembly)));
        }
        public IClassMatchingInterfaceRule IsDeclaredInAssembly(Expression <Predicate <Assembly> > predicateExpression)
        {
            PredicateString.Add($"is declared in an assembly matching '{predicateExpression}'");
            var predicate = predicateExpression.Compile();

            return(InnerAppendCondition((c, i) => predicate(i.Assembly)));
        }
        public IClassMatchingInterfaceRule Is(Expression <Predicate <Type> > typeExpressionExpression)
        {
            PredicateString.Add($"is '{typeExpressionExpression}'");
            var typeFilter = typeExpressionExpression.Compile();

            return(InnerAppendCondition((c, i) => typeFilter(i)));
        }
        public IClassMatchingInterfaceRule HasName(Expression <Predicate <string> > nameFilterExpression)
        {
            PredicateString.Add($"has name matching '{nameFilterExpression}'");
            var nameFilter = nameFilterExpression.Compile();

            return(InnerAppendCondition((c, i) => nameFilter(i.Name)));
        }
        public IClassMatchingInterfaceRule HasMatchingName(Expression <Func <Type, string> > typeFilterExpression)
        {
            PredicateString.Add($"has matching name {typeFilterExpression}");
            var classNameMatcher = typeFilterExpression.Compile();

            return(InnerAppendCondition((c, i) => i.Name.Matches(classNameMatcher(c.ClassType))));
        }
Exemple #15
0
        public IInterfaceRule HasName(Expression <Predicate <string> > nameFilterExpression)
        {
            PredicateString.Add($"has name ({nameFilterExpression})");
            var nameFilter = nameFilterExpression.Compile();

            return(AppendCondition(c => nameFilter(c.Name)));
        }
Exemple #16
0
        public IAssemblyRule ReferenceAssembliesMatching(Expression <Predicate <IAssemblyInfo> > assemblyFilterExpression)
        {
            PredicateString.Add($"reference assemblies matching '{assemblyFilterExpression}'");
            var assemblyFilter = assemblyFilterExpression.Compile();

            return(AppendCondition(a => a.ReferencedAssemblies.Any(r => assemblyFilter(r))));
        }
Exemple #17
0
        public IReducedClassCollection IsDeclaredInAssembly(Expression <Predicate <Assembly> > assemblyFilterExpression)
        {
            var predicate = assemblyFilterExpression.Compile();

            PredicateString.Add($"is declared in an assembly matching '{assemblyFilterExpression}'");
            return(AppendCondition(c => predicate(c.AssemblyInfo.Assembly.Assembly)));
        }
Exemple #18
0
        private IAssemblyCollection ThatOrWhich(string word)
        {
            PredicateString.Add(word);
            var assemblies     = _assemblyCollector.Get();
            var assemblyFilter = new FilteredAssemblies(assemblies);
            var result         = new AssemblyCollection(assemblyFilter, _negate);

            return(_not ? result.Not() : result);
        }
Exemple #19
0
 public static IEnumerable <T> Search <T>(this IEnumerable <T> list, PredicateString <T> predicate,
                                          SearchMethods method, string searchstring)
 {
     return(Search(list, predicate, method, SplitString(searchstring)));
 }
Exemple #20
0
 public static IEnumerable <T> Search <T, R>(this IEnumerable <T> list, Converter <T, R> convert,
                                             PredicateString <R> predicate, SearchMethods method, params string[] searchstring)
 {
     return(Search(list, (t, s) => predicate(convert(t), s), method, searchstring));
 }
Exemple #21
0
 public static IEnumerable <T> Search <T>(this IPlaylist <T> playlist, PredicateString <T> predicate,
                                          SearchMethods method, params string[] searchstring)
 {
     return(Search(playlist, t => t, predicate, method, searchstring));
 }
Exemple #22
0
 public IReducedAssemblyCollection HasNameMatching(string pattern)
 {
     PredicateString.Add($"has name matching '{pattern}'");
     return(InnerHasName(n => n.Matches(pattern)));
 }
Exemple #23
0
 private IClassCollection ThatOrWhich(string word)
 {
     PredicateString.Add(word);
     return(_classCollectionFactory.Create(_classCollector, _negate, _not));
 }
Exemple #24
0
 public IReducedClassCollection ImplementsInterfaceMatching(string pattern)
 {
     PredicateString.Add($"implements an interface matching '{pattern}'");
     return(AppendCondition(c => c.ClassType.GetInterfaces().Any(i => i.Name.Matches(pattern))));
 }
Exemple #25
0
 public IAssemblyRule ReferenceAssembliesMatching(string pattern)
 {
     PredicateString.Add($"reference assemblies matching '{pattern}'");
     return(AppendCondition(r => r.ReferencedAssemblies.Any(x => x.Name.Matches(pattern))));
 }
Exemple #26
0
 public IAssemblyRule ReferenceAssembly(string name)
 {
     PredicateString.Add($"reference assembly '{name}'");
     return(AppendCondition(r => r.ReferencedAssemblies.Any(x => x.Name == name)));
 }
Exemple #27
0
 public IReducedAssemblyCollection HasName(Expression <Predicate <string> > nameFilter)
 {
     PredicateString.Add($"has name matching {nameFilter}");
     return(InnerHasName(nameFilter.Compile()));
 }
Exemple #28
0
 public IReducedClassCollection Is(Expression <Predicate <Type> > typeExpression)
 {
     PredicateString.Add($"Is {typeExpression}");
     return(AppendCondition(c => typeExpression.Compile()(c.ClassType)));
 }
 private IClassMatchingInterfaceCondition WhichOrThat(string word)
 {
     PredicateString.Add(word);
     return(_classMatchingInterfaceCondition);
 }
Exemple #30
0
 public IReducedClassCollection HasAttribute <TAttribute>()
     where TAttribute : Attribute
 {
     PredicateString.Add($"has attribute '{typeof(TAttribute).Name}'");
     return(AppendCondition(c => ClassHasAttribute(c.ClassType, typeof(TAttribute))));
 }