Example #1
0
        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);
                }
            }
Example #3
0
        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)));
        }
Example #4
0
        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)));
        }
Example #6
0
        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();
        }
Example #7
0
        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();
        }
 public static void SetAs3Features(this IASContext context)
 {
     var asContext = new AS3Context.Context(new AS3Context.AS3Settings());
     context.Features.Returns(asContext.Features);
 }