/// <summary> /// Search all base packages (com, net, org,...) in classpath /// </summary> /// <returns>Base packages list as members</returns> static public ASMemberList GetBasePackages() { ASMemberList packages = new ASMemberList(); ASMember package; string[] dirEntries; string[] fileEntries; string cname; string upPath; string mmCP = MMClassPath.ToUpper(); string mtascCP = mtascRootFolder.ToUpper(); bool notMacromedia; bool notMTASC; foreach(string path in classPath) try { upPath = path.ToUpper(); notMacromedia = (mmCP.Length == 0) || !upPath.StartsWith(mmCP); notMTASC = (mtascCP.Length == 0) || !upPath.StartsWith(mtascCP); // base classes if (notMacromedia && notMTASC) { try { fileEntries = System.IO.Directory.GetFiles(path, "*.as"); } catch { // fail silently fileEntries = null; } if (fileEntries != null) foreach(string entry in fileEntries) { cname = GetLastStringToken(entry, dirSeparator); int p = cname.LastIndexOf('.'); cname = cname.Substring(0,p); if (!cname.StartsWith("_") && (cname.IndexOf('.') < 0) && (cname.IndexOf(' ') < 0) && (packages.Search(cname, 0) == null)) { //DebugConsole.Trace("Base class "+cname); package = new ASMember(); package.Flags = 0; package.Type = package.Name = cname; packages.Add(package); } } } // base packages if (notMacromedia) { try { dirEntries = System.IO.Directory.GetDirectories(path); } catch { // fail silently dirEntries = null; } if (dirEntries != null) foreach(string entry in dirEntries) { cname = GetLastStringToken(entry, dirSeparator); if (!cname.StartsWith("_") && (cname.IndexOf(' ') < 0) && (cname.IndexOf('.') < 0) && (packages.Search(cname, 0) == null)) { //DebugConsole.Trace("Base package "+cname); package = new ASMember(); package.Flags = FlagType.Package; package.Type = package.Name = cname; packages.Add(package); } } } else if (packages.Search("mx", 0) == null) { package = new ASMember(); package.Flags = FlagType.Package; package.Type = package.Name = "mx"; packages.Add(package); } } catch(Exception ex) { ErrorHandler.ShowError(ex.Message+"\n"+path, ex); } packages.Sort(); return packages; }
/// <summary> /// Find folder and classes in classpath /// </summary> /// <param name="folder">Path to eval</param> /// <returns>Package folders and classes</returns> static public ASMemberList FindPackage(string folder, bool completeContent) { if ((folder == null) || (folder.Length == 0)) return null; ASMemberList package = new ASMemberList(); ASMember pathMember; string[] dirEntries; string cname; foreach(string path in classPath) try { if (System.IO.Directory.Exists(path+folder)) { // continue parsing? if (!completeContent) return package; // add sub packages try { dirEntries = System.IO.Directory.GetDirectories(path+folder); } catch { // fail silently dirEntries = null; } if (dirEntries != null) foreach(string entry in dirEntries) { cname = GetLastStringToken(entry, dirSeparator); if ((cname.Length > 0) && !cname.StartsWith("_") && (cname.IndexOf(' ') < 0) && (cname.IndexOf('.') < 0) && (package.Search(cname, 0) == null)) { pathMember = new ASMember(); pathMember.Flags = FlagType.Package; pathMember.Type = folder.Replace(dirSeparatorChar, '.')+"."+cname; pathMember.Name = cname; package.Add(pathMember); } } // add sub classes try { dirEntries = System.IO.Directory.GetFiles(path+folder); } catch { // fail silently dirEntries = null; } if (dirEntries != null) foreach(string entry in dirEntries) if (entry.EndsWith(".as")) { cname = GetLastStringToken(entry, dirSeparator); cname = cname.Substring(0, cname.LastIndexOf(".")); pathMember = package.Search(cname, 0); if ((pathMember == null) && (cname.Length > 0) && (cname.IndexOf(' ') < 0) && (cname.IndexOf('.') < 0)) { pathMember = new ASMember(); pathMember.Flags = 0; pathMember.Type = folder.Replace(dirSeparatorChar,'.')+"."+cname; pathMember.Name = cname; package.Add(pathMember); } } } } catch(Exception ex) { ErrorHandler.ShowError(ex.Message+"\n"+path+folder, ex); } // result if (package.Count > 0) { package.Sort(); return package; } else return null; }