static void BuildClassPath(AS3Context.Context context) { context.BuildClassPath(); var intrinsicPath = $"{PathHelper.LibraryDir}{Path.DirectorySeparatorChar}AS3{Path.DirectorySeparatorChar}intrinsic"; context.Classpath.AddRange(Directory.GetDirectories(intrinsicPath).Select(it => new PathModel(it, context))); foreach (var it in context.Classpath) { if (it.IsVirtual) { context.ExploreVirtualPath(it); } else { var path = it.Path; foreach (var searchPattern in context.GetExplorerMask()) { foreach (var fileName in Directory.GetFiles(path, searchPattern, SearchOption.AllDirectories)) { it.AddFile(context.GetFileModel(fileName)); } } context.RefreshContextCache(path); } } }
public void ParseFile_CompletionError() { using (var resourceFile = new TestFile("ASCompletion.Test_Files.parser.as3.CompletionErrorTest.as")) { var plugin = Substitute.For<PluginMain>(); plugin.MenuItems.Returns(new List<ToolStripItem>()); var context = new AS3Context.Context(new AS3Context.AS3Settings()); Context.ASContext.GlobalInit(plugin); Context.ASContext.Context = context; var model = context.GetCodeModel(File.ReadAllText(resourceFile.DestinationFile)); Assert.AreEqual(2, model.Members.Count); // First member = function itself var funcMember = model.Members[0]; Assert.AreEqual("init", funcMember.Name); Assert.AreEqual("void", funcMember.Type); Assert.AreEqual(FlagType.Function, funcMember.Flags & FlagType.Function); Assert.AreEqual("args", funcMember.Parameters[0].Name); Assert.AreEqual("String", funcMember.Parameters[0].Type); var infoMember = model.Members[1]; Assert.AreEqual("info", infoMember.Name); Assert.AreEqual("NativeProcessStartupInfo", infoMember.Type); Assert.AreEqual(FlagType.Variable, infoMember.Flags & FlagType.Variable); } }
public static void SetAs3Features(this IASContext mock) { var currentModel = new FileModel { Context = mock, Version = 3 }; var context = new AS3Context.Context(new AS3Context.AS3Settings()); BuildClassPath(context); context.CurrentModel = currentModel; mock.Settings.LanguageId.Returns(context.Settings.LanguageId); mock.Features.Returns(context.Features); mock.CurrentModel.Returns(currentModel); var visibleExternalElements = context.GetVisibleExternalElements(); mock.GetVisibleExternalElements().Returns(visibleExternalElements); mock.GetCodeModel(null).ReturnsForAnyArgs(x => { var src = x[0] as string; return(string.IsNullOrEmpty(src) ? null : context.GetCodeModel(src)); }); mock.IsImported(null, Arg.Any <int>()).ReturnsForAnyArgs(it => { var member = it.ArgAt <MemberModel>(0); return(member != null && context.IsImported(member, it.ArgAt <int>(1))); }); mock.ResolveType(null, null).ReturnsForAnyArgs(x => context.ResolveType(x.ArgAt <string>(0), x.ArgAt <FileModel>(1))); }
public static void SetAs3Features(this IASContext mock) { var context = new AS3Context.Context(new AS3Context.AS3Settings()); BuildClassPath(context); context.CurrentModel = new FileModel { Context = mock, Version = 3 }; SetFeatures(mock, context); }
public static void SetAS3Features(this IASContext context) { var currentModel = new FileModel { Context = context, Version = 3 }; var asContext = new AS3Context.Context(new AS3Context.AS3Settings()); BuildClassPath(asContext); asContext.CurrentModel = currentModel; context.Features.Returns(asContext.Features); context.CurrentModel.Returns(currentModel); var visibleExternalElements = asContext.GetVisibleExternalElements(); context.GetVisibleExternalElements().Returns(x => visibleExternalElements); context.GetCodeModel(null).ReturnsForAnyArgs(x => { var src = x[0] as string; return(string.IsNullOrEmpty(src) ? null : asContext.GetCodeModel(src)); }); context.ResolveType(null, null).ReturnsForAnyArgs(x => asContext.ResolveType(x.ArgAt <string>(0), x.ArgAt <FileModel>(1))); }
static void Main(string[] args) { inputFile = "config.xml"; outputFile = "mxml.xml"; if (args.Length == 1 && args[0] == "help") { Console.WriteLine("Usage:"); Console.WriteLine(" MXMLCompletionBuilder [<configuration file> [<output file>]]"); return; } if (args.Length > 0) { inputFile = args[0]; outputFile = Path.Combine(Path.GetDirectoryName(inputFile), outputFile); } if (args.Length > 1) { outputFile = args[1]; } // read config file if (File.Exists(inputFile)) { try { config = GeneratorConfig.Deserialize(inputFile); } catch (Exception ex) { Console.WriteLine("Unable to load configuration:\n" + ex.Message); } } // write default config file if (config == null) { config = new GeneratorConfig(); config.FlexFrameworkSWCs = new string[] { @"C:\flex_sdk_3\frameworks\libs", @"C:\flex_sdk_3\frameworks\libs\air" }; config.Classpath = new string[] { @"C:\Program Files\FlashDevelop\Library\AS3\intrinsic", @"C:\flex_sdk_3\frameworks\projects\rpc\src", @"C:\flex_sdk_3\frameworks\projects\framework\src", @"C:\flex_sdk_3\frameworks\projects\airframework\src" }; config.IncludePackage = new SerializableDictionary <string, string>(); config.IncludePackage.Add("flash.display", "display"); config.IncludePackage.Add("flash.errors", "errors"); config.IncludePackage.Add("flash.events", "events"); config.IncludePackage.Add("flash.external", "external"); config.IncludePackage.Add("flash.filters", "filters"); config.IncludePackage.Add("flash.geom", "geom"); config.IncludePackage.Add("flash.media", "media"); config.IncludePackage.Add("flash.net", "net"); config.IncludePackage.Add("flash.printing", "printing"); //config.IncludePackage.Add("flash.system", "system"); config.IncludePackage.Add("flash.text", "text"); config.IncludePackage.Add("flash.ui", "ui"); config.IncludePackage.Add("flash.utils", "utils"); config.IncludePackage.Add("flash.xml", "xml"); config.BuiltInTags = new SerializableDictionary <string, string>(); config.BuiltInTags.Add("arguments", ""); config.BuiltInTags.Add("Array", ""); config.BuiltInTags.Add("Binding", "source,destination"); config.BuiltInTags.Add("Boolean", ""); config.BuiltInTags.Add("Component", "className:s"); config.BuiltInTags.Add("Metadata", ""); config.BuiltInTags.Add("method", "name,concurrency,result:e,resultFormat,fault:e"); config.BuiltInTags.Add("Model", "source"); config.BuiltInTags.Add("Number", ""); config.BuiltInTags.Add("Object", ""); config.BuiltInTags.Add("operation", "name,concurrency,makeObjectsBindable,result:e,resultFormat,fault:e"); config.BuiltInTags.Add("request", ""); config.BuiltInTags.Add("Script", "source"); config.BuiltInTags.Add("String", ""); config.BuiltInTags.Add("Style", "source"); config.BuiltInTags.Add("XML", "format,source"); config.BuiltInTags.Add("XMLList", ""); config.ForceMxNamespace = new string[] { "Sprite", "Matrix", "Point", "BevelFilter", "BlurFilter", "ColorMatrixFilter", "DisplacementFilter", "DropShadowFilter", "GlowFilter", "GradientBevelFilter", "GradientGlowFilter" }; config.LeafTags = new string[] { "UIComponent" }; config.ContainerTags = new string[] { "Container", "IContainer" }; GeneratorConfig.Serialize(inputFile, config); } log = File.CreateText(Path.Combine(Path.GetDirectoryName(inputFile), "log.txt")); output = File.CreateText(outputFile); // mx tags declared in SWCs mxTags = new HashSet <string>(); foreach (string swcPath in config.FlexFrameworkSWCs) { string[] libs = Directory.GetFiles(swcPath, "*.swc"); foreach (string lib in libs) { ReadCatalog(lib); } } // explore classpath context = new AS3Context.Context(new AS3Context.AS3Settings()); groups = new Dictionary <string, TypeInfos>(); ExploreNext(); Console.ReadLine(); }
public static void SetAs3Features(this IASContext context) { var asContext = new AS3Context.Context(new AS3Context.AS3Settings()); context.Features.Returns(asContext.Features); }
static void Main(string[] args) { inputFile = "config.xml"; outputFile = "mxml.xml"; if (args.Length == 1 && args[0] == "help") { Console.WriteLine("Usage:"); Console.WriteLine(" MXMLCompletionBuilder [<configuration file> [<output file>]]"); return; } if (args.Length > 0) { inputFile = args[0]; outputFile = Path.Combine(Path.GetDirectoryName(inputFile), outputFile); } if (args.Length > 1) outputFile = args[1]; // read config file if (File.Exists(inputFile)) { try { config = GeneratorConfig.Deserialize(inputFile); } catch (Exception ex) { Console.WriteLine("Unable to load configuration:\n" + ex.Message); } } // write default config file if (config == null) { config = new GeneratorConfig(); config.FlexFrameworkSWCs = new string[] { @"C:\flex_sdk_3\frameworks\libs", @"C:\flex_sdk_3\frameworks\libs\air" }; config.Classpath = new string[] { @"C:\Program Files\FlashDevelop\Library\AS3\intrinsic", @"C:\flex_sdk_3\frameworks\projects\rpc\src", @"C:\flex_sdk_3\frameworks\projects\framework\src", @"C:\flex_sdk_3\frameworks\projects\airframework\src" }; config.IncludePackage = new SerializableDictionary<string, string>(); config.IncludePackage.Add("flash.display", "display"); config.IncludePackage.Add("flash.errors", "errors"); config.IncludePackage.Add("flash.events", "events"); config.IncludePackage.Add("flash.external", "external"); config.IncludePackage.Add("flash.filters", "filters"); config.IncludePackage.Add("flash.geom", "geom"); config.IncludePackage.Add("flash.media", "media"); config.IncludePackage.Add("flash.net", "net"); config.IncludePackage.Add("flash.printing", "printing"); //config.IncludePackage.Add("flash.system", "system"); config.IncludePackage.Add("flash.text", "text"); config.IncludePackage.Add("flash.ui", "ui"); config.IncludePackage.Add("flash.utils", "utils"); config.IncludePackage.Add("flash.xml", "xml"); config.BuiltInTags = new SerializableDictionary<string, string>(); config.BuiltInTags.Add("arguments", ""); config.BuiltInTags.Add("Array", ""); config.BuiltInTags.Add("Binding", "source,destination"); config.BuiltInTags.Add("Boolean", ""); config.BuiltInTags.Add("Component", "className:s"); config.BuiltInTags.Add("Metadata", ""); config.BuiltInTags.Add("method", "name,concurrency,result:e,resultFormat,fault:e"); config.BuiltInTags.Add("Model", "source"); config.BuiltInTags.Add("Number", ""); config.BuiltInTags.Add("Object", ""); config.BuiltInTags.Add("operation", "name,concurrency,makeObjectsBindable,result:e,resultFormat,fault:e"); config.BuiltInTags.Add("request", ""); config.BuiltInTags.Add("Script", "source"); config.BuiltInTags.Add("String", ""); config.BuiltInTags.Add("Style", "source"); config.BuiltInTags.Add("XML", "format,source"); config.BuiltInTags.Add("XMLList", ""); config.ForceMxNamespace = new string[] { "Sprite", "Matrix", "Point", "BevelFilter", "BlurFilter", "ColorMatrixFilter", "DisplacementFilter", "DropShadowFilter", "GlowFilter", "GradientBevelFilter", "GradientGlowFilter" }; config.LeafTags = new string[] { "UIComponent" }; config.ContainerTags = new string[] { "Container", "IContainer" }; GeneratorConfig.Serialize(inputFile, config); } log = File.CreateText(Path.Combine(Path.GetDirectoryName(inputFile), "log.txt")); output = File.CreateText(outputFile); // mx tags declared in SWCs mxTags = new HashSet<string>(); foreach (string swcPath in config.FlexFrameworkSWCs) { string[] libs = Directory.GetFiles(swcPath, "*.swc"); foreach (string lib in libs) ReadCatalog(lib); } // explore classpath context = new AS3Context.Context(new AS3Context.AS3Settings()); groups = new Dictionary<string, TypeInfos>(); ExploreNext(); Console.ReadLine(); }