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); } }
static T AutoCreateLoad <T>(string assetName) where T : ScriptableObject { string[] guids = AssetDatabase.FindAssets($"t:{typeof(T).Name}"); if (guids.Length > 0) { string path = AssetDatabase.GUIDToAssetPath(guids[0]); var result = AssetDatabase.LoadAssetAtPath <T>(path); return(result); } else { DirectoryVisitor directoryVisitor = new DirectoryVisitor("Assets/") .CreateFolderIfNotExist(ResourcePath) .Enter(ResourcePath); var assetIns = ScriptableObject.CreateInstance <T>(); string path = $"{directoryVisitor}{assetName}.asset"; Debug.Log($"Auto create asset : {path}"); AssetDatabase.CreateAsset(assetIns, path); var result = AssetDatabase.LoadAssetAtPath <T>(path); return(result); } }
// // Initialization public DirectoryTraverser( DirectoryVisitor onDirectory, FileVisitor onFile, string[] excludeFiles, string[] excludeDirectories) { this.excludeDirectories = excludeDirectories; this.excludeFiles = excludeFiles; this.onDirectory = onDirectory; this.onFile = onFile; }
internal static void traverseNormalClassesAndInstantiate(DirectoryInfo dir, DirectoryVisitor visitor) { if (!dir.Exists) { throw new ArgumentException("not a directory: " + dir.Name); } visitor.enterDirectory(dir); // ignore classes in directories "auto", "datatypes" and // "util" // ignoreList : abstract classes, classes which are no jdf // elements ... //FileFilter ff = new FileFilter() //{ // public bool accept(File pathname) // { // bool acceptFile = false; // string name = pathname.getName(); // if (pathname.isDirectory()) // { // acceptFile = !name.Equals("auto") && !name.Equals("datatypes") && !name.Equals("util") && !name.Equals("validate"); // } // else // { // VString ignoreList = new VString("JDFConstants.java JDFDoc.java JDFDocumentBuilder.java " + "JDFException.java JDFParser.java JDFVersions.java JDFAbstractState.java " + "JDFEvaluation.java JDFNodeTerm.java JDFTerm.java JDFEnumerationSpan.java " + "JDFSpan.java JDFSpanBase.java " + "JDFDurationSpan.java JDFIntegerSpan.java JDFNameSpan.java JDFNumberSpan.java " + "JDFOptionSpan.java JDFShapeSpan.java JDFSpanNamedColor.java " + "JDFStringSpan.java JDFTimeSpan.java JDFXYPairSpan.java " + "JDFResourceLink.java " + "JDFPool.java", null); // acceptFile = !ignoreList.Contains(name) && name.StartsWith("JDF") && name.ToLower().EndsWith(".cs"); // } // return acceptFile; // } //); DirectoryInfo[] dirs = dir.GetDirectories(); for (int j = 0; j < dirs.Length; ++j) { DirectoryInfo jDir = dirs[j]; if (OkToVisitDir(jDir.Name)) { traverseNormalClassesAndInstantiate(jDir, visitor); } } FileInfo[] files = dir.GetFiles("JDF*.cs"); for (int i = 0; i < files.Length; ++i) { FileInfo file = files[i]; if (OkToVisitFile(file.Name)) { visitor.visitFile(file); } } visitor.leaveDirectory(dir); }
} // public FileSortVM( IServiceProvider services, CategoryManager manager ) : base( services ) { manager.PropertyChanged += Manager_PropertyChanged; this.CategorySet = manager.Current; this.FilePreview = new FilePreviewVM(); this.visitor = new DirectoryVisitor( string.Empty ); this.visitor.PropertyChanged += this.DirectoryPropertyChanged; this.visitor.SetDirectory( Properties.SortingSettings.Default.LastDirectory ); // Used to listen for changes to the underlying view to reset the bindings. // Necessary because the view isn't linked when the constructor is called. // TODO: this isn't very good. this.PropertyChanged += this.FileSortVM_PropertyChanged; }
static string GetRootPath() { const string AsmdefQuery = "t:ASMDEF OnionDataEditor.Editor"; string asmdefGUID = AssetDatabase.FindAssets(AsmdefQuery)[0]; string asmdefPath = AssetDatabase.GUIDToAssetPath(asmdefGUID); DirectoryVisitor directoryVisitor = new DirectoryVisitor(asmdefPath); directoryVisitor.Back(); string rootPath = directoryVisitor.GetPathWithoutSplitChar(); if (rootPath.StartsWith("Assets/")) { return(rootPath); } return(null); }
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 DirectoryTraverser( DirectoryVisitor onDirectory, FileVisitor onFile) : this(onDirectory, onFile, null, null) { }
public override void visitChildren(DirectoryVisitor visitor) { try { IReadOnlyList<IStorageItem> storageItems = StorageFolder.GetItemsAsync().DoSynchronously(); foreach (IStorageItem storageItem in storageItems) { StorageItemPathAttributes pathAttributes = new StorageItemPathAttributes(storageItem); if (storageItem is IStorageFolder) visitor.visit(new StorageFolderDirectory(this, (StorageFolder)storageItem)); else if (storageItem is IStorageFile) visitor.visit(new StorageFileFile(this, (StorageFile)storageItem)); else throw new Exception("Unknown type of StorageItem: " + storageItem); } } catch (System.IO.IOException e) { throw DotNetIOUtils.jSimpleExceptionFromDotNetIOException(e); } }
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 DirectoryTraverser( DirectoryVisitor onDirectory, FileVisitor onFile) : this(onDirectory,onFile,null,null) { }
internal static void traverseAutoClassesAndCheckForCorrespondingNormalClass(DirectoryInfo dir, DirectoryVisitor visitor) { if (!dir.Exists) { throw new ArgumentException("not a directory: " + dir.Name); } //new FileFilter() //{ // public bool accept(File pathname) // { // bool acceptFile = false; // string name = pathname.getName(); // if (pathname.isDirectory()) // { // acceptFile = false; // } // else // { // acceptFile = name.StartsWith("JDFAuto") && name.ToLower().EndsWith(".cs"); // } // return acceptFile; // } // } //); visitor.enterDirectory(dir); DirectoryInfo[] dirs = dir.GetDirectories(); for (int j = 0; j < dirs.Length; ++j) { traverseAutoClassesAndCheckForCorrespondingNormalClass(dirs[j], visitor); } FileInfo[] files = dir.GetFiles("JDFAuto*.cs"); for (int i = 0; i < files.Length; ++i) { try { visitor.visitFile(files[i]); } catch (Exception e) { Console.WriteLine(e.Message); } } visitor.leaveDirectory(dir); }