public override void visitChildren(FileVisitor fileVisitor, DirectoryVisitor directoryVisitor, VisitFailed visitFailed) { try { IReadOnlyList <IStorageItem> storageItems = getStorageFolder().GetItemsAsync().DoSynchronously(); foreach (IStorageItem storageItem in storageItems) { StorageItemPathAttributes pathAttributes = new StorageItemPathAttributes(storageItem); if (storageItem is IStorageFolder) { if (directoryVisitor != null) { directoryVisitor(new StorageFolderDirectory(this, (StorageFolder)storageItem)); } } else if (storageItem is IStorageFile) { if (fileVisitor != null) { fileVisitor(new StorageFileFile(this, (StorageFile)storageItem)); } } else { throw new Exception("Unknown type of StorageItem: " + storageItem); } } } catch (System.IO.IOException e) { throw DotNetIOUtils.jSimpleExceptionFromDotNetIOException(e); } }
public void Run() { // Determine the output file. // TODO - make options.InputPath non-required, and set things up to be able to read from stdin // TODO - base the output extension on the file type string outputPath = Path.ChangeExtension(options.InputPath, ".svg"); // TODO - figure out how to lex a stream! string content; using (var reader = new StreamReader(options.InputPath)) { content = reader.ReadToEnd(); } var lexer = new PicishLexer(new AntlrInputStream(content)); lexer.RemoveErrorListeners(); lexer.AddErrorListener(new ThrowingErrorListener <int>()); var parser = new PicishParser(new CommonTokenStream(lexer)); parser.RemoveErrorListeners(); parser.AddErrorListener(new ThrowingErrorListener <IToken>()); // TODO - clean this up! // var result = new PicishVisitor().Visit(parser.file()); var result = new FileVisitor().Visit(parser.file()); // TODO - dump/render the diagram // Console.WriteLine("Run is not yet implemented: {0} -> {1}.", options.InputPath, outputPath); // Console.WriteLine("Result: {0}", result); }
// // Initialization public DirectoryTraverser( DirectoryVisitor onDirectory, FileVisitor onFile, string[] excludeFiles, string[] excludeDirectories) { this.excludeDirectories = excludeDirectories; this.excludeFiles = excludeFiles; this.onDirectory = onDirectory; this.onFile = onFile; }
public void CanParseSimpleShape(string content, Type expectedShape) { // Arrange var parser = CreateParser(content); // Act var diagram = new FileVisitor().Visit(parser.file()); // Assert diagram.Should().NotBeNull(); diagram.Objects.Should().HaveCount(1); var shape = diagram.Objects[0]; shape.Should().BeOfType(expectedShape); shape.Center.X.Should().Be(0.0); shape.Center.Y.Should().Be(0.0); // TODO - verify width and height }
private bool RecurseVisit(DirectoryInfo _Directory, FileVisitor _Visitor) { // Visit files FileInfo[] Files = _Directory.GetFiles(); foreach (FileInfo File in Files) { if (!_Visitor(File)) { return(false); } } // Recurse through directories DirectoryInfo[] Directories = _Directory.GetDirectories(); foreach (DirectoryInfo Dir in Directories) { if (!RecurseVisit(Dir, _Visitor)) { return(false); } } return(true); }
public override void visitChildren(FileVisitor fileVisitor, DirectoryVisitor directoryVisitor, VisitFailed visitFailed) { var directoryInfo = new DirectoryInfo(directoryPath); try { foreach (var fileSystemInfo in directoryInfo.EnumerateFileSystemInfos()) { if ((fileSystemInfo.Attributes & FileAttributes.Directory) == FileAttributes.Directory) { directoryVisitor(new FileSystemDirectory(fileSystemInfo.FullName)); } else { fileVisitor(new FileSystemFile(this, fileSystemInfo.FullName)); } } } catch (System.IO.IOException e) { throw DotNetIOUtils.jSimpleExceptionFromDotNetIOException(e); } }
public static int MainImpl(string[] args) { // Load defaults from app.config. settings = new Settings(); // Were any command line args specified? if (args.Length > 0) { // Override default settings with command line args. CommandLine.Parse(args, settings); } else { // Obtain arguments from UI. PromptForArgs dlg = new PromptForArgs(settings); if (dlg.ShowDialog() != DialogResult.OK) { return(1); } } // Validate arguments. if (settings.FilePattern == null || settings.RegexPattern == null) { throw new ApplicationException("Please specify at least a pathspec and regex pattern."); } // Default basedir to cwd. if (settings.BaseDirectory == null || settings.BaseDirectory == string.Empty) { settings.BaseDirectory = System.Environment.CurrentDirectory; } // Echo command line options. Console.Write(@"Searching directory ""{0}"", files ""{1}"", for pattern ""{2}"" (options: ", settings.BaseDirectory, settings.FilePattern, settings.RegexPattern); System.Collections.ArrayList optionstrings = new System.Collections.ArrayList(); if (settings.RegexIgnoreCase) { optionstrings.Add("IgnoreCase"); } if (settings.RegexSingleline) { optionstrings.Add("Singleline"); } if (settings.RegexMimicVS) { optionstrings.Add("RegexMimicVS"); } if (settings.ActiveReplace) { optionstrings.Add("ActiveReplace"); } if (settings.ReplacementText != null) { optionstrings.Add(String.Format("Replacement pattern: {0}", settings.ReplacementText)); } if (optionstrings.Count == 0) { optionstrings.Add("none"); } Console.Write(String.Join(", ", (string[])optionstrings.ToArray(typeof(string)))); Console.WriteLine(")"); // Reimplement VS7's helper patterns for things like C identifiers, numbers, string literals, etc. if (settings.RegexMimicVS) { settings.RegexPattern = settings.RegexPattern.Replace("::", "\xFFFF"); settings.RegexPattern = settings.RegexPattern.Replace(":i", @"([_a-zA-Z][_a-zA-Z0-9]*)"); settings.RegexPattern = settings.RegexPattern.Replace(":n", @"(\b[-]?[0-9]+(\.[0-9]+([Ee](\+|-)?[0-9]+)?)?\b)"); settings.RegexPattern = settings.RegexPattern.Replace(":q", @"((@""(""""|[^""])*"")|(""(\\.|[^""\\])*""))"); settings.RegexPattern = settings.RegexPattern.Replace("\xFFFF", ":"); } // Create the regex, and populate the visitor callback with it. RegexOptions ro = RegexOptions.Compiled | RegexOptions.Multiline; if (settings.RegexIgnoreCase) { ro |= RegexOptions.IgnoreCase; } if (settings.RegexSingleline) { ro |= RegexOptions.Singleline; } FileVisitor visitor = new FileVisitor(); visitor.UserRegex = new Regex(settings.RegexPattern, ro); visitor.ActiveReplace = settings.ActiveReplace; visitor.ReplacementText = settings.ReplacementText; visitor.BackupDirectory = settings.BackupDirectory; visitor.OutputWidth = settings.OutputWidth; // Do the dew! Jitsu.IO.DirectoryTraverser.FileVisitor onFile = new Jitsu.IO.DirectoryTraverser.FileVisitor(visitor.VisitFile); Jitsu.IO.DirectoryTraverser spider = new Jitsu.IO.DirectoryTraverser(null, onFile); string directoryPattern = (settings.DontRecurse) ? "" : "*"; spider.TraverseBreadthFirst(settings.BaseDirectory, settings.FilePattern, directoryPattern); // Report the results, in standard VS7 format. //Win32.TrySetConsoleColor(Win32.ConsoleColorFlags.ForegroundGray); Win32.TrySetConsoleColor(COLOUR.DEFAULT); Console.WriteLine(); Console.WriteLine("Total found: {0} Matching files: {1} Total files searched: {2}", visitor.MatchesFound, visitor.FilesFound, visitor.FilesSearched); // Done. return(0); }
public static void WalkFilesystemTree(FileVisitor fileVisitor, DirectoryInfo directoryInfo) { Walk(fileVisitor, directoryInfo); }
public override void Accept(FileVisitor visitor) { visitor.PreVisit(this); Files.ForEach(f => f.Accept(visitor)); visitor.PostVisit(this); }
public override void visitChildren(FileVisitor fileVisitor, DirectoryVisitor directoryVisitor, VisitFailed visitFailed) { var directoryInfo = new DirectoryInfo(directoryPath); try { foreach (var fileSystemInfo in directoryInfo.EnumerateFileSystemInfos()) { if ((fileSystemInfo.Attributes & FileAttributes.Directory) == FileAttributes.Directory) directoryVisitor(new FileSystemDirectory(fileSystemInfo.FullName)); else fileVisitor(new FileSystemFile(this, fileSystemInfo.FullName)); } } catch (System.IO.IOException e) { throw DotNetIOUtils.jSimpleExceptionFromDotNetIOException(e); } }
protected void BuildTree(string root, Predicate <FileSystemNode> predicate) { FileVisitor.Start(root, predicate); }
public override void visitChildren(FileVisitor fileVisitor, DirectoryVisitor directoryVisitor, VisitFailed visitFailed) { try { IReadOnlyList<IStorageItem> storageItems = getStorageFolder().GetItemsAsync().DoSynchronously(); foreach (IStorageItem storageItem in storageItems) { StorageItemPathAttributes pathAttributes = new StorageItemPathAttributes(storageItem); if (storageItem is IStorageFolder) { if (directoryVisitor != null) directoryVisitor(new StorageFolderDirectory(this, (StorageFolder) storageItem)); } else if (storageItem is IStorageFile) { if (fileVisitor != null) fileVisitor(new StorageFileFile(this, (StorageFile) storageItem)); } else throw new Exception("Unknown type of StorageItem: " + storageItem); } } catch (System.IO.IOException e) { throw DotNetIOUtils.jSimpleExceptionFromDotNetIOException(e); } }
public void Accept(FileVisitor visitor) { visitor.PreVisit(this); visitor.PostVisit(this); }
public DecoratorAnonymousInnerClass3(FileVisitor <Path> wrapped, ThrowingConsumer <Path, IOException> operation) : base(wrapped) { this._operation = operation; }
private bool RecurseVisit( DirectoryInfo _Directory, FileVisitor _Visitor ) { // Visit files FileInfo[] Files = _Directory.GetFiles(); foreach ( FileInfo File in Files ) if ( !_Visitor( File ) ) return false; // Recurse through directories DirectoryInfo[] Directories = _Directory.GetDirectories(); foreach ( DirectoryInfo Dir in Directories ) if ( !RecurseVisit( Dir, _Visitor ) ) return false; return true; }
private static FileVisitorResult Walk(FileVisitor fileVisitor, DirectoryInfo directoryInfo) { FileVisitorResult preVisitResult = fileVisitor.PreVisitDirectory(directoryInfo); bool preSkipSiblings = false; switch (preVisitResult) { case FileVisitorResult.TERMINATE: return(FileVisitorResult.TERMINATE); case FileVisitorResult.CONTINUE: break; case FileVisitorResult.SKIP_SUBTREE: return(FileVisitorResult.CONTINUE); case FileVisitorResult.SKIP_SIBLINGS: preSkipSiblings = true; break; } IOException occurredException = null; foreach (FileSystemInfo fileSystemInfo in directoryInfo.GetFileSystemInfos()) { if (((int)fileSystemInfo.Attributes & (int)FileAttributes.Directory) != 0) { DirectoryInfo subdir = (DirectoryInfo)fileSystemInfo; FileVisitorResult walkSubdirResult = Walk(fileVisitor, subdir); switch (walkSubdirResult) { case FileVisitorResult.CONTINUE: break; case FileVisitorResult.SKIP_SIBLINGS: return(FileVisitorResult.CONTINUE); case FileVisitorResult.TERMINATE: return(FileVisitorResult.TERMINATE); default: throw new NotImplementedException(walkSubdirResult.ToString()); } } else { FileInfo subfile = (FileInfo)fileSystemInfo; try { FileVisitorResult visitFileResult = fileVisitor.VisitFile(subfile); switch (visitFileResult) { case FileVisitorResult.CONTINUE: break; case FileVisitorResult.SKIP_SIBLINGS: return(FileVisitorResult.CONTINUE); case FileVisitorResult.TERMINATE: return(FileVisitorResult.TERMINATE); default: throw new NotImplementedException(visitFileResult.ToString()); } } catch (IOException ioe) { FileVisitorResult visitFileFailedResult = fileVisitor.VisitFileFailed(subfile, ioe); switch (visitFileFailedResult) { case FileVisitorResult.TERMINATE: return(FileVisitorResult.TERMINATE); case FileVisitorResult.CONTINUE: break; case FileVisitorResult.SKIP_SIBLINGS: return(FileVisitorResult.CONTINUE); default: throw new NotImplementedException(visitFileFailedResult.ToString()); } } } } FileVisitorResult postVisitResult = fileVisitor.PostVisitDirectory(directoryInfo, occurredException); return(preSkipSiblings ? FileVisitorResult.SKIP_SIBLINGS : postVisitResult); }
public FileVisitorAnonymousInnerClass(System.Predicate <Path> predicate, FileVisitor <Path> wrapped) { this._predicate = predicate; this._wrapped = wrapped; }
public static FileVisitor <Path> OnlyMatching(System.Predicate <Path> predicate, FileVisitor <Path> wrapped) { return(new FileVisitorAnonymousInnerClass(predicate, wrapped)); }
public Decorator(FileVisitor <T> wrapped) { this.Wrapped = wrapped; }
public static int MainImpl(string[] args) { // Load defaults from app.config. settings = new Settings(); // Were any command line args specified? if (args.Length > 0) { // Override default settings with command line args. CommandLine.Parse(args,settings); } else { // Obtain arguments from UI. PromptForArgs dlg = new PromptForArgs(settings); if (dlg.ShowDialog() != DialogResult.OK) return 1; } // Validate arguments. if (settings.FilePattern == null || settings.RegexPattern == null) throw new ApplicationException("Please specify at least a pathspec and regex pattern."); // Default basedir to cwd. if (settings.BaseDirectory == null || settings.BaseDirectory == string.Empty) settings.BaseDirectory = System.Environment.CurrentDirectory; // Echo command line options. Console.Write(@"Searching directory ""{0}"", files ""{1}"", for pattern ""{2}"" (options: ", settings.BaseDirectory, settings.FilePattern, settings.RegexPattern ); System.Collections.ArrayList optionstrings = new System.Collections.ArrayList(); if (settings.RegexIgnoreCase) optionstrings.Add("IgnoreCase"); if (settings.RegexSingleline) optionstrings.Add("Singleline"); if (settings.RegexMimicVS) optionstrings.Add("RegexMimicVS"); if (settings.ActiveReplace) optionstrings.Add("ActiveReplace"); if (settings.ReplacementText != null) optionstrings.Add(String.Format("Replacement pattern: {0}",settings.ReplacementText)); if (optionstrings.Count == 0) optionstrings.Add("none"); Console.Write(String.Join(", ", (string[])optionstrings.ToArray(typeof(string)))); Console.WriteLine(")"); // Reimplement VS7's helper patterns for things like C identifiers, numbers, string literals, etc. if (settings.RegexMimicVS) { settings.RegexPattern = settings.RegexPattern.Replace("::", "\xFFFF"); settings.RegexPattern = settings.RegexPattern.Replace(":i", @"([_a-zA-Z][_a-zA-Z0-9]*)"); settings.RegexPattern = settings.RegexPattern.Replace(":n", @"(\b[-]?[0-9]+(\.[0-9]+([Ee](\+|-)?[0-9]+)?)?\b)"); settings.RegexPattern = settings.RegexPattern.Replace(":q", @"((@""(""""|[^""])*"")|(""(\\.|[^""\\])*""))"); settings.RegexPattern = settings.RegexPattern.Replace("\xFFFF", ":"); } // Create the regex, and populate the visitor callback with it. RegexOptions ro = RegexOptions.Compiled|RegexOptions.Multiline; if (settings.RegexIgnoreCase) ro |= RegexOptions.IgnoreCase; if (settings.RegexSingleline) ro |= RegexOptions.Singleline; FileVisitor visitor = new FileVisitor(); visitor.UserRegex = new Regex(settings.RegexPattern, ro); visitor.ActiveReplace = settings.ActiveReplace; visitor.ReplacementText = settings.ReplacementText; visitor.BackupDirectory = settings.BackupDirectory; visitor.OutputWidth = settings.OutputWidth; // Do the dew! Jitsu.IO.DirectoryTraverser.FileVisitor onFile = new Jitsu.IO.DirectoryTraverser.FileVisitor(visitor.VisitFile); Jitsu.IO.DirectoryTraverser spider = new Jitsu.IO.DirectoryTraverser(null,onFile); string directoryPattern = (settings.DontRecurse) ? "" : "*"; spider.TraverseBreadthFirst(settings.BaseDirectory,settings.FilePattern,directoryPattern); // Report the results, in standard VS7 format. //Win32.TrySetConsoleColor(Win32.ConsoleColorFlags.ForegroundGray); Win32.TrySetConsoleColor( COLOUR.DEFAULT ); Console.WriteLine(); Console.WriteLine("Total found: {0} Matching files: {1} Total files searched: {2}", visitor.MatchesFound, visitor.FilesFound, visitor.FilesSearched); // Done. return 0; }
public DirectoryTraverser( DirectoryVisitor onDirectory, FileVisitor onFile) : this(onDirectory,onFile,null,null) { }
public static FileVisitor <Path> ThrowExceptions(FileVisitor <Path> wrapped) { return(new DecoratorAnonymousInnerClass(wrapped)); }
public static FileVisitor <Path> OnFile(ThrowingConsumer <Path, IOException> operation, FileVisitor <Path> wrapped) { return(new DecoratorAnonymousInnerClass3(wrapped, operation)); }
public DirectoryTraverser( DirectoryVisitor onDirectory, FileVisitor onFile) : this(onDirectory, onFile, null, null) { }
public DecoratorAnonymousInnerClass(FileVisitor <Path> wrapped) : base(wrapped) { }