public Assembly BatchCompilation(string outputAssembly, IList <SparkViewDescriptor> descriptors)
        {
            List <CompiledViewEntry> list  = new List <CompiledViewEntry>();
            List <string>            list2 = new List <string>();

            foreach (SparkViewDescriptor descriptor in descriptors)
            {
                CompiledViewEntry item = new CompiledViewEntry {
                    Descriptor = descriptor,
                    Loader     = this.CreateViewLoader(),
                    Compiler   = this.LanguageFactory.CreateViewCompiler(this, descriptor)
                };
                List <IList <Chunk> > chunksLoaded    = new List <IList <Chunk> >();
                List <string>         templatesLoaded = new List <string>();
                this.LoadTemplates(item.Loader, descriptor.Templates, chunksLoaded, templatesLoaded);
                item.Compiler.GenerateSourceCode(chunksLoaded, item.Loader.GetEverythingLoaded());
                list2.Add(item.Compiler.SourceCode);
                list.Add(item);
            }
            BatchCompiler compiler2 = new BatchCompiler {
                OutputAssembly = outputAssembly
            };
            Assembly assembly = compiler2.Compile(this.Settings.Debug, "csharp", list2.ToArray());

            foreach (CompiledViewEntry entry3 in list)
            {
                entry3.Compiler.CompiledType = assembly.GetType(entry3.Compiler.ViewClassFullName);
                entry3.Activator             = this.ViewActivatorFactory.Register(entry3.Compiler.CompiledType);
                this.CompiledViewHolder.Store(entry3);
            }
            return(assembly);
        }
예제 #2
0
        public override void CompileView(IEnumerable<IList<Chunk>> viewTemplates, IEnumerable<IList<Chunk>> allResources)
        {
            GenerateSourceCode(viewTemplates, allResources);

            var batchCompiler = new BatchCompiler();
            var assembly = batchCompiler.Compile(Debug, "csharp", SourceCode);
            CompiledType = assembly.GetType(ViewClassFullName);
        }
예제 #3
0
        public override void CompileView(IEnumerable <IList <Chunk> > viewTemplates, IEnumerable <IList <Chunk> > allResources)
        {
            GenerateSourceCode(viewTemplates, allResources);

            var batchCompiler = new BatchCompiler();
            var assembly      = batchCompiler.Compile(Debug, "visualbasic", SourceCode);

            CompiledType = assembly.GetType(ViewClassFullName);
        }
예제 #4
0
        public void ScriptExamples_BatchCompileFields_GeneratesBatchOutput()
        {
            IBatchCompiler batchCompiler = new BatchCompiler();

            batchCompiler.Compile(TxtFile.ReadText("Batch.tpl"));

            // this must take place afterwards, otherwise it will be cleared by the compile.
            batchCompiler.CreateFieldInput("@Column1", "Title", "Description");
            batchCompiler.CreateFieldInput("@Column2", "Title", "Description");
            batchCompiler.Input("@Column1", "COL 1");
            batchCompiler.Input("@Column2", "COL 2");

            ISymbolInfo[] symbolInfo = batchCompiler.GetSymbolInfoSet(new string[] { "@Column1", "@Column2" });

            Generator generator = new Generator();
            string    output    = generator.Generate(batchCompiler, "@{combination}");

            Assert.AreEqual("COL 1 - COL 2", output);

            Assert.AreEqual(2, symbolInfo.Length);
        }
예제 #5
0
        public Assembly BatchCompilation(string outputAssembly, IList <SparkViewDescriptor> descriptors)
        {
            var batch      = new List <CompiledViewEntry>();
            var sourceCode = new List <string>();

            foreach (var descriptor in descriptors)
            {
                var entry = new CompiledViewEntry
                {
                    Descriptor = descriptor,
                    Loader     = CreateViewLoader(),
                    Compiler   = LanguageFactory.CreateViewCompiler(this, descriptor)
                };

                var chunksLoaded    = new List <IList <Chunk> >();
                var templatesLoaded = new List <string>();
                LoadTemplates(entry.Loader, descriptor.Templates, chunksLoaded, templatesLoaded);

                entry.Compiler.GenerateSourceCode(chunksLoaded, entry.Loader.GetEverythingLoaded());
                sourceCode.Add(entry.Compiler.SourceCode);

                batch.Add(entry);
            }

            var batchCompiler = new BatchCompiler {
                OutputAssembly = outputAssembly
            };

            var assembly = batchCompiler.Compile(Settings.Debug, "csharp", sourceCode.ToArray());

            foreach (var entry in batch)
            {
                entry.Compiler.CompiledType = assembly.GetType(entry.Compiler.ViewClassFullName);
                entry.Activator             = ViewActivatorFactory.Register(entry.Compiler.CompiledType);
                CompiledViewHolder.Store(entry);
            }
            return(assembly);
        }