예제 #1
0
파일: Glob.cs 프로젝트: Carbonfrost/f-core
        static bool StaticEquals(Glob lhs, Glob rhs)
        {
            if (ReferenceEquals(lhs, rhs))
            {
                return(true);
            }
            if (ReferenceEquals(lhs, null) || ReferenceEquals(rhs, null))
            {
                return(false);
            }

            return(lhs._text == rhs._text);
        }
예제 #2
0
        public static Glob Combine(Glob arg1, Glob arg2, Glob arg3) {
            if (arg1 == null) {
                throw new ArgumentNullException("arg1");
            }

            if (arg2 == null) {
                throw new ArgumentNullException("arg2");
            }

            if (arg3 == null) {
                throw new ArgumentNullException("arg3");
            }

            return Combine(arg1, Combine(arg2, arg3));
        }
예제 #3
0
        internal static IEnumerable<string> FilterDirectory(Glob glob,
                                                            string directory,
                                                            Predicate<string> match,
                                                            GlobController enumerator) {

            var items = Enumerable.Empty<string>();
            IEnumerable<string> subItemsStart = new[] { enumerator.ExpandEnvironmentVariables(directory) };
            foreach (SegmentSequence sub in glob._segments) {
                var subItems = sub.Enumerate(subItemsStart, enumerator);
                items = items.Concat(subItems);
            }

            return items
                .Where(t => match(t))
                .Distinct();
        }
예제 #4
0
        public static Glob Combine(Glob arg1, Glob arg2) {
            if (arg1 == null) {
                throw new ArgumentNullException("arg1");
            }

            if (arg2 == null) {
                throw new ArgumentNullException("arg2");
            }

            if (object.ReferenceEquals(arg1, arg2))
                return arg1;

            if (arg1.IsAnything || arg2.IsAnything)
                return Glob.Anything;

            return new Glob(arg1._text + ";" + arg2._text,
                            arg1._segments.Concat(arg2._segments).ToArray<SegmentSequence>());
        }
예제 #5
0
 static Exception _TryParse(string text, out Glob value) {
     return _TryParse(text, new GlobController(), out value);
 }
예제 #6
0
 public static bool TryParse(string text, out Glob value) {
     return _TryParse(text, out value) == null;
 }
예제 #7
0
 private GlobTemplate(IEnumerable <string> variables, string glob, string regex)
 {
     _variables = new List <string>(variables);
     _regex     = new Regex(regex);
     _glob      = Glob.Parse(glob);
 }
예제 #8
0
 public override string ToString()
 {
     return(Glob.ToString());
 }
예제 #9
0
 public IEnumerable <GlobTemplateMatch> EnumerateFileSystemEntries(string workingDirectory)
 {
     return(NewMatches(WindowsPathSeparators(Glob.EnumerateFileSystemEntries(workingDirectory))));
 }
예제 #10
0
 public IEnumerable <GlobTemplateMatch> EnumerateFileSystemEntries()
 {
     return(NewMatches(WindowsPathSeparators(Glob.EnumerateFileSystemEntries())));
 }
예제 #11
0
 public IEnumerable <GlobTemplateMatch> EnumerateDirectories()
 {
     return(NewMatches(WindowsPathSeparators(Glob.EnumerateDirectories())));
 }
예제 #12
0
 public bool IsMatch(string input)
 {
     return(Glob.IsMatch(input));
 }
예제 #13
0
파일: Glob.cs 프로젝트: Carbonfrost/f-core
 public IEnumerable <string> EnumerateFiles(string workingDirectory)
 {
     return(Glob.FilterDirectory(this, workingDirectory ?? _controller.WorkingDirectory, _controller.FileExists, this._controller));
 }