Exemple #1
0
        public static string RenderTemplate(string template, ViewDataDictionary viewData)
        {
            // Set up your spark engine goodness.
            var settings = new SparkSettings().SetPageBaseType(typeof(SparkView));

            var engine = new SparkViewEngine(settings)
            {
                ViewFolder = new FileSystemViewFolder(AppDomain.CurrentDomain.BaseDirectory + @"\..\..\..\IntegrationTestingViews\Views")
            };

            // "Describe" the view (the template, it is a template after all), and its details.
            var descriptor = new SparkViewDescriptor().AddTemplate(template);

            // Create a spark view engine instance
            var view = (SparkView)engine.CreateInstance(descriptor);

            try
            {
                // Merge the view data.
                viewData.Keys.ToList().ForEach(x => view.ViewData[x] = viewData[x]);

                // Render the view to a text writer.
                var writer = new StringWriter();
                view.RenderView(writer);
                return(writer.ToString());
            }
            finally
            {
                engine.ReleaseInstance(view);
            }
        }
        public SparkViewEngine Engine()
        {
            if (engine != null)
            {
                return(engine);
            }

            var settings = new SparkSettings()
                           .SetPageBaseType(typeof(WebFormsSparkView))
                           .SetNullBehaviour(NullBehaviour.Strict);

            foreach (var ns in namespaces)
            {
                settings = settings.AddNamespace(ns);
            }
            foreach (var a in assemblies)
            {
                settings = settings.AddAssembly(a);
            }

            engine = new SparkViewEngine(settings);

            engine.ViewFolder = GetViewFolder();

            engine.BatchCompilation(GetViewDescriptors());
            return(engine);
        }
Exemple #3
0
    static void Main(string[] args)
    {
        // following are one-time steps
        // create engine
        var settings = new SparkSettings()
                       .SetPageBaseType(typeof(EmailView));
        var templates = new InMemoryViewFolder();
        var engine    = new SparkViewEngine(settings)
        {
            ViewFolder = templates
        };

        // add templates
        templates.Add("sample.spark", @"Dear ${user.Name}, This is an email.Sincerely, Spark View Engine http://constanto.org/unsubscribe/${user.Id}");
        // following are per-render steps
        // render template
        var descriptor = new SparkViewDescriptor()
                         .AddTemplate("sample.spark");
        var view = (EmailView)engine.CreateInstance(descriptor);

        view.user = new User {
            Id = 655321, Name = "Alex"
        };
        view.RenderView(Console.Out);
        Console.ReadLine();
    }
Exemple #4
0
        public IEnumerable <ConfigurationSetupResult> Setup(string applicationEnvironment)
        {
            yield return(new ConfigurationSetupResult("superglue.SparkSetup", environment =>
            {
                var assemblies = environment.GetAssemblies().ToList();

                var templateSource = new AggregatedTemplateSource(new EmbeddedTemplateSource(assemblies), new FileSystemTemplateSource(assemblies, new FileScanner()));

                environment[SparkEnvironmentExtensions.SparkConstants.TemplateSource] = templateSource;

                var templates = templateSource.FindTemplates().ToList();

                var sparkViewEngine = new SparkViewEngine(new SparkSettings())
                {
                    DefaultPageBaseType = typeof(SuperGlueSparkView).FullName,
                    ViewFolder = new SuperGlueViewFolder(templates),
                    PartialProvider = new SuperGluePartialProvider()
                };

                environment[SparkEnvironmentExtensions.SparkConstants.ViewEngine] = sparkViewEngine;

                environment.AlterSettings <OutputSettings>(x => x.When(y => y.GetRequest().Headers.Accept.Contains("text/html") && y.GetOutput() != null && templates.Any(z => z.ModelType == y.GetOutput().GetType()))
                                                           .UseRenderer(new RenderOutputUsingSpark(sparkViewEngine, templates)));

                return Task.CompletedTask;
            }, "superglue.OutputSetup"));
        }
Exemple #5
0
        public override void Install(IDictionary stateSaver)
        {
            // figure out all paths based on this assembly in the bin dir
            string assemblyPath  = GetType().Assembly.Location;
            string targetPath    = Path.ChangeExtension(assemblyPath, ".Views.dll");
            string webSitePath   = Path.GetDirectoryName(Path.GetDirectoryName(assemblyPath));
            string webBinPath    = Path.Combine(webSitePath, "bin");
            string webFileHack   = Path.Combine(webSitePath, "web");
            string viewsLocation = Path.Combine(webSitePath, "Views");

            // this hack enables you to open the web.config as if it was an .exe.config
            File.Create(webFileHack).Close();
            Configuration config = ConfigurationManager.OpenExeConfiguration(webFileHack);

            File.Delete(webFileHack);

            // GetSection will try to resolve the "Spark" assembly, which the installutil appdomain needs help finding
            AppDomain.CurrentDomain.AssemblyResolve +=
                ((sender, e) => Assembly.LoadFile(Path.Combine(webBinPath, e.Name + ".dll")));
            var settings = (ISparkSettings)config.GetSection("spark");

            // Finally create an engine with the <spark> settings from the web.config
            var engine = new SparkViewEngine(settings)
            {
                ViewFolder = new FileSystemViewFolder(viewsLocation)
            };

            // And generate all of the known view/master templates into the target assembly
            engine.BatchCompilation(targetPath, Global.AllKnownDescriptors());
        }
Exemple #6
0
        public void UseAssemblyAndNamespaceFromSettings()
        {
            var settings = new SparkSettings()
                           .AddNamespace("System.Web")
                           .AddAssembly("System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")
                           .SetPageBaseType(typeof(StubSparkView));

            var views = new InMemoryViewFolder
            {
                { Path.Combine("home", "index.spark"), "<div>${ProcessStatus.Alive}</div>" }
            };

            var engine = new SparkViewEngine(settings)
            {
                ViewFolder = views
            };

            var descriptor = new SparkViewDescriptor();

            descriptor.Templates.Add(Path.Combine("home", "index.spark"));

            var contents = engine.CreateInstance(descriptor).RenderView();

            Assert.AreEqual("<div>Alive</div>", contents);
        }
Exemple #7
0
        public void SectionAsSegmentAndRenderPrefixes()
        {
            var settings = new SparkSettings()
                           .SetPageBaseType(typeof(StubSparkView))
                           .SetParseSectionTagAsSegment(true);

            var engine = new SparkViewEngine(settings)
            {
                ViewFolder = new FileSystemViewFolder("Spark.Tests.Views")
            };

            var view =
                (StubSparkView)
                engine.CreateInstance(new SparkViewDescriptor().AddTemplate("Prefix\\section-render-prefix.spark"));
            var output = new StringWriter();

            view.RenderView(output);

            ContainsInOrder(output.ToString(),
                            "<p>one</p>",
                            "<p>two</p>",
                            "<p>three</p>",
                            "<macro:ignored>ignored</macro:ignored>",
                            "<content:ignored>ignored</content:ignored>",
                            "<use:ignored>ignored</use:ignored>",
                            "<render:ignored>ignored</render:ignored>",
                            "<section:ignored>ignored</section:ignored>"
                            );
        }
Exemple #8
0
        /// <summary>
        /// Initializes a new instance of the <see cref="SparkEngine"/> class.
        /// </summary>
        /// <exception cref="ArgumentNullException"><c>viewBaseType</c> or <c>handler</c> is <c>null</c>.</exception>
        public SparkEngine(Type viewBaseType, InitializeViewHandler handler)
        {
            if (viewBaseType == null)
            {
                throw new ArgumentNullException("viewBaseType");
            }
            if (handler == null)
            {
                throw new ArgumentNullException("handler");
            }
            _viewBaseType  = viewBaseType;
            _handler       = handler;
            _currentEngine = this;

            SparkSettings settings = new SparkSettings();

            settings.AddNamespace("System.Collections.Generic");
            settings.AddNamespace("HttpServer.Mvc.Views");
            settings.AddNamespace("HttpServer.ViewEngine.Spark");
            settings.AddAssembly(GetType().Assembly);
            settings.AddAssembly(typeof(Server).Assembly);
            _engine = new SparkViewEngine(settings)
            {
                ViewFolder          = new MyViewFolder(),
                DefaultPageBaseType = viewBaseType.FullName
            };
        }
Exemple #9
0
        public string Render <TViewData>(string template, TViewData data)
        {
            var settings = new SparkSettings();

            settings.AddNamespace("Topshelf.Dashboard");
            settings.PageBaseType = typeof(TopshelfView).FullName;

            var engine = new SparkViewEngine(settings)
            {
                ViewFolder = _viewFolder,
            };

            ISparkView instance = engine.CreateInstance(new SparkViewDescriptor().AddTemplate(template));

            var view = (TopshelfView <TViewData>)instance;

            view.SetModel(data);

            var sb = new StringBuilder();

            using (var writer = new StringWriter(sb))
                view.RenderView(writer);

            return(sb.ToString());
        }
Exemple #10
0
        public SourceSupervisor(ISparkSource source)
        {
            _source = source;

            IVsHierarchy hierarchy;
            uint         itemid;
            IVsTextLines buffer;

            _source.GetDocument(out hierarchy, out itemid, out buffer);

            _path = GetDocumentPath(hierarchy, itemid);


            //Spark.Web.Mvc.SparkView
            //MyBaseView

            var settings = new VsProjectSparkSettings(hierarchy)
            {
                PageBaseType = source.GetDefaultPageBaseType()
            };

            var viewFolder = new VsProjectViewFolder(_source, hierarchy);

            _engine = new SparkViewEngine(settings)
            {
                ViewFolder = viewFolder
            };

            _grammar = new MarkupGrammar(settings);
        }
Exemple #11
0
        public void PrefixFromSettings()
        {
            var settings = new SparkSettings()
                           .SetPageBaseType(typeof(StubSparkView))
                           .SetPrefix("s");

            var engine = new SparkViewEngine(settings)
            {
                ViewFolder = new FileSystemViewFolder("Spark.Tests.Views")
            };

            var view = (StubSparkView)engine.CreateInstance(new SparkViewDescriptor().AddTemplate("Prefix\\prefix-from-settings.spark"));

            view.ViewData["Names"] = new[] { "alpha", "beta", "gamma" };

            var output = new StringWriter();

            view.RenderView(output);

            ContainsInOrder(output.ToString(),
                            "<li", "alpha", "</li>",
                            "<li", "beta", "</li>",
                            "<li", "gamma", "</li>",
                            "<var x=\"1/0\">element ignored</var>",
                            "<p each=\"5\">attribute ignored</p>"
                            );
        }
        public virtual void Init()
        {
            mocks = new MockRepository();

            var services = new StubMonoRailServices();

            services.ViewSourceLoader = new FileAssemblyViewSourceLoader("MonoRail.Tests.Views");
            services.AddService(typeof(IViewSourceLoader), services.ViewSourceLoader);

            viewComponentFactory = new DefaultViewComponentFactory();
            viewComponentFactory.Initialize();
            services.AddService(typeof(IViewComponentFactory), viewComponentFactory);
            services.AddService(typeof(IViewComponentRegistry), viewComponentFactory.Registry);

            var settings = new SparkSettings();

            engine = new SparkViewEngine(settings);
            services.AddService(typeof(ISparkViewEngine), engine);

            factory = new SparkViewFactory();
            factory.Service(services);

            controller        = MockRepository.GenerateMock <IController>();
            controllerContext = new ControllerContext();
            var request = new StubRequest();

            request.FilePath = "";
            var response = new StubResponse();

            engineContext = new StubEngineContext(request, response, new UrlInfo("", "Home", "Index", "/", "castle"));
            engineContext.AddService(typeof(IViewComponentFactory), viewComponentFactory);
            engineContext.AddService(typeof(IViewComponentRegistry), viewComponentFactory.Registry);
        }
Exemple #13
0
 public SparkEngine(DescriptorBuilder builder)
 {
     _builder = builder;
     _engine  = new SparkViewEngine(new SparkSettings()
     {
         PageBaseType = typeof(SubvertSparkView).FullName
     });
 }
Exemple #14
0
        protected override void beforeEach()
        {
            _viewEngine = new SparkViewEngine();
            _settings   = _viewEngine.Settings;

            Services.Inject <ISparkViewEngine>(_viewEngine);
            ClassUnderTest.Activate(Enumerable.Empty <IPackageInfo>(), MockFor <IPackageLog>());
        }
Exemple #15
0
 public void Init()
 {
     engine = new SparkViewEngine(new SparkSettings().SetPageBaseType("Spark.Tests.Stubs.StubSparkView"))
     {
         ViewFolder = new FileSystemViewFolder("Spark.Tests.Views")
     };
     engine.ExtensionFactory = new StubExtensionFactory();
 }
 public void Init()
 {
     _engine = new SparkViewEngine(new SparkSettings())
               {
                   LanguageFactory = new PythonLanguageFactory(),
                   DefaultPageBaseType = typeof(StubSparkView).FullName
               };
     IronPython.Hosting.Python.CreateEngine();
 }
 public void Init()
 {
     _engine = new SparkViewEngine(new SparkSettings())
     {
         LanguageFactory     = new PythonLanguageFactory(),
         DefaultPageBaseType = typeof(StubSparkView).FullName
     };
     IronPython.Hosting.Python.CreateEngine();
 }
Exemple #18
0
        public SparkRender()
        {
            _viewFolder = new EmbeddedViewFolder(typeof(SparkRender).Assembly, "klinger.views");

            _engine = new SparkViewEngine
            {
                DefaultPageBaseType = typeof(VoteView).FullName,
                ViewFolder          = _viewFolder
            };
        }
 public void Init()
 {
     _viewPath        = "fake/path";
     _partialProvider = MockRepository.GenerateMock <IPartialProvider>();
     _engine          = new SparkViewEngine(new SparkSettings())
     {
         PartialProvider = _partialProvider
     };
     _result = new[] { "output" };
 }
Exemple #20
0
        public void Init()
        {
            _settings = new SparkSettings()
                        .SetPageBaseType(typeof(StubSparkView));

            _engine = new SparkViewEngine(_settings)
            {
                ViewFolder = new FileSystemViewFolder("Spark.Tests.Views")
            };
        }
Exemple #21
0
 public void Init()
 {
     _viewPath = "fake/path";
     _partialProvider = MockRepository.GenerateMock<IPartialProvider>();
     _engine = new SparkViewEngine(new SparkSettings())
     {
         PartialProvider = _partialProvider
     };
     _result = new[] {"output"};
 }
        public void Init()
        {
            _settings = new SparkSettings()
                .SetPageBaseType(typeof(StubSparkView));

            _engine = new SparkViewEngine(_settings)
            {
                ViewFolder = new FileSystemViewFolder("Spark.Tests.Views")
            };
        }
        public SparkEngine()
        {
            // TODO read settings from config
            var settings = new SparkSettings
            {
                DefaultLanguage = LanguageType.CSharp
            };

            settings.SetPageBaseType(typeof(ViewBase));
            _engine = new SparkViewEngine();
        }
Exemple #24
0
        private ISparkView CreateView(IViewFolder viewFolder, string template)
        {
            var settings = new SparkSettings().SetPageBaseType(typeof(StubSparkView));

            var engine = new SparkViewEngine(settings)
            {
                ViewFolder = viewFolder
            };

            return(engine.CreateInstance(new SparkViewDescriptor().AddTemplate(template)));
        }
Exemple #25
0
        protected void Application_Start(object sender, EventArgs e)
        {
            var engine = new SparkViewEngine
            {
                ViewFolder = new FileSystemViewFolder(Server.MapPath("~/Views"))
            };

            Application["ViewEngine"] = engine;

            engine.LoadBatchCompilation(Assembly.Load("MediumTrustHosting.Views"));
        }
        public void InMemoryViewFolderUsedByEngine()
        {
            var folder = new InMemoryViewFolder();
            folder.Add("home\\index.spark", "<p>Hello world</p>");
            var engine = new SparkViewEngine(new SparkSettings().SetPageBaseType(typeof (StubSparkView))){ViewFolder = folder};

            var descriptor = new SparkViewDescriptor();
            descriptor.Templates.Add("home\\index.spark");
            var view = engine.CreateInstance(descriptor);
            var contents = view.RenderView();
            Assert.AreEqual("<p>Hello world</p>", contents);
        }
Exemple #27
0
        /// <summary>
        /// Initializes a new instance of the <see cref="SparkEngine"/> class.
        /// </summary>
        public SparkEngine()
        {
            _currentEngine = this;
            SparkSettings settings = new SparkSettings();

            settings.AddNamespace("System.Collections.Generic");
            _engine = new SparkViewEngine(settings)
            {
                ViewFolder          = new MyViewFolder(),
                DefaultPageBaseType = typeof(SparkView).FullName
            };
        }
        public override void Service(IServiceProvider provider)
        {
            base.Service(provider);

            if (Engine == null)
                Engine = (ISparkViewEngine)provider.GetService(typeof(ISparkViewEngine));

            if (Engine == null)
                Engine = new SparkViewEngine(typeof(SparkView).FullName, this);

            Engine.ExtensionFactory = this;
        }
        public void GenerateSimpleTemplate()
        {
            var descriptor = new SparkViewDescriptor()
                .SetLanguage(LanguageType.Javascript)
                .AddTemplate("Clientside\\simple.spark");

            var engine = new SparkViewEngine { ViewFolder = new FileSystemViewFolder("Spark.Tests.Views") };
            var entry = engine.CreateEntry(descriptor);

            Assert.IsNotNull(entry.SourceCode);
            Assert.IsNotEmpty(entry.SourceCode);
        }
Exemple #30
0
        public Templater(string templateFolder)
        {
            SparkSettings settings = new SparkSettings()
                                     .SetPageBaseType(typeof(TemplateBase))
                                     .AddViewFolder(ViewFolderType.FileSystem,
                                                    new Dictionary <string, string>
            {
                { "basePath", templateFolder }
            });

            engine = new SparkViewEngine(settings);
        }
Exemple #31
0
        public HtmlGenerator()
        {
            var setup = new SparkSettings();

            setup.AddNamespace(typeof(Program).Namespace);
            setup.AddNamespace(typeof(TemplateExtensions.TemplateHelperExtensions).Namespace);
            setup.AddNamespace(typeof(Parsing.Model.TypeIdentifier).Namespace);
            setup.AddNamespace(typeof(System.Linq.Enumerable).Namespace);

            engine = new SparkViewEngine(setup);
            SetTemplatePath("templates");
            engine.DefaultPageBaseType = typeof(SparkTemplateBase).FullName;
        }
        public void ApplySettings()
        {
            var settings = new SparkSettings()
                .AddViewFolder(ViewFolderType.VirtualPathProvider, new Dictionary<string, string> { { "virtualBaseDir", "~/MoreViews/" } });
            var engine = new SparkViewEngine(settings);

            var folder = engine.ViewFolder;
            Assert.IsAssignableFrom(typeof(CombinedViewFolder), folder);
            var combined = (CombinedViewFolder)folder;
            Assert.IsAssignableFrom(typeof(VirtualPathProviderViewFolder), combined.Second);
            var vpp = (VirtualPathProviderViewFolder)combined.Second;
            Assert.AreEqual("~/MoreViews/", vpp.VirtualBaseDir);
        }
        public void GenerateSimpleTemplate()
        {
            var descriptor = new SparkViewDescriptor()
                             .SetLanguage(LanguageType.Javascript)
                             .AddTemplate("Clientside\\simple.spark");

            var engine = new SparkViewEngine {
                ViewFolder = new FileSystemViewFolder("Spark.Tests.Views")
            };
            var entry = engine.CreateEntry(descriptor);

            Assert.IsNotNull(entry.SourceCode);
            Assert.IsNotEmpty(entry.SourceCode);
        }
Exemple #34
0
        public void ProcessRequest(HttpContext context)
        {
            var engine = new SparkViewEngine
                             {
                                 ViewFolder = new VirtualPathProviderViewFolder("~/Views")
                             };
            var entry = engine.CreateEntry(new SparkViewDescriptor()
                                               .SetLanguage(LanguageType.Javascript)
                                               .AddTemplate(context.Request.PathInfo.TrimStart('/', Path.DirectorySeparatorChar) + ".spark"));

            //Spark.Simple._LiteralHtml({foo:'asoi'})
            context.Response.ContentType = "text/javascript";
            context.Response.Write(entry.SourceCode);
        }
        public void AssemblyParameter()
        {
            var settings = new SparkSettings()
                .AddViewFolder(ViewFolderType.EmbeddedResource, new Dictionary<string, string> { { "assembly", "Spark.Tests" }, { "resourcePath", "Spark.Tests.Views" } });

            var engine = new SparkViewEngine(settings);

            var folder = engine.ViewFolder;
            Assert.IsAssignableFrom(typeof(CombinedViewFolder), folder);
            var combined = (CombinedViewFolder)folder;
            Assert.IsAssignableFrom(typeof(EmbeddedViewFolder), combined.Second);
            var embeddedViewFolder = (EmbeddedViewFolder)combined.Second;
            Assert.AreEqual(Assembly.Load("spark.tests"), embeddedViewFolder.Assembly);
        }
Exemple #36
0
        public void ProcessRequest(HttpContext context)
        {
            var engine = new SparkViewEngine
            {
                ViewFolder = new VirtualPathProviderViewFolder("~/Views")
            };
            var entry = engine.CreateEntry(new SparkViewDescriptor()
                                           .SetLanguage(LanguageType.Javascript)
                                           .AddTemplate(context.Request.PathInfo.TrimStart('/', Path.DirectorySeparatorChar) + ".spark"));

            //Spark.Simple._LiteralHtml({foo:'asoi'})
            context.Response.ContentType = "text/javascript";
            context.Response.Write(entry.SourceCode);
        }
        public void CustomViewFolder()
        {
            var settings = new SparkSettings()
                .AddViewFolder(typeof(MyViewFolder), new Dictionary<string, string> { { "foo", "quux" }, { "bar", "42" } });
            var engine = new SparkViewEngine(settings);

            var folder = engine.ViewFolder;
            Assert.IsAssignableFrom(typeof(CombinedViewFolder), folder);
            var combined = (CombinedViewFolder)folder;
            Assert.IsAssignableFrom(typeof(MyViewFolder), combined.Second);
            var customFolder = (MyViewFolder)combined.Second;
            Assert.AreEqual("quux", customFolder.Foo);
            Assert.AreEqual(42, customFolder.Bar);
        }
Exemple #38
0
        public IBuilder Load(Options options)
        {
            var currentDirectory  = Environment.CurrentDirectory;
            var assemblyDirectory = Path.GetDirectoryName(typeof(SakeEngine).Assembly.Location);

            var settings = new SparkSettings()
                           .SetPageBaseType(typeof(BuilderBase))
                           .SetAutomaticEncoding(true)
                           .SetAttributeBehaviour(AttributeBehaviour.TextOriented)
                           .SetDebug(true);

            IViewFolder viewFolder = new FileSystemViewFolder(currentDirectory);

            foreach (var includeDir in options.IncludeDirectory)
            {
                var path = Path.Combine(currentDirectory, includeDir);
                viewFolder = new CombinedViewFolder(viewFolder, new FileSystemViewFolder(path));
                foreach (var file in Directory.EnumerateFiles(path, "*.dll"))
                {
                    try
                    {
                        Assembly.LoadFile(file);
                    }
                    catch
                    {
                    }
                }
            }

            viewFolder = new CombinedViewFolder(viewFolder, new FileSystemViewFolder(assemblyDirectory));

            var engine = new SparkViewEngine(settings)
            {
                ViewFolder       = viewFolder,
                ExtensionFactory = new ExtensionFactory(),
            };

            var descriptor = new SparkViewDescriptor
            {
                Templates = new[] { options.Makefile }
            };

            var builder = (BuilderBase)engine.CreateInstance(descriptor);

            builder.Output       = new StringWriter();
            builder.Log          = _log;
            builder.SakeSettings = _settings;
            builder.Render();
            return(builder);
        }
        protected override void beforeEach()
        {
            _viewEngine = new SparkViewEngine();
            _settings   = _viewEngine.Settings;

            var commonViewNamespaces = new CommonViewNamespaces();

            commonViewNamespaces.Add("Foo");
            commonViewNamespaces.Add("Bar");

            Services.Inject(commonViewNamespaces);

            Services.Inject <ISparkViewEngine>(_viewEngine);
            ClassUnderTest.Activate(Enumerable.Empty <IPackageInfo>(), MockFor <IPackageLog>());
        }
        public void AnonymousTypeBecomesHashLikeObject()
        {
            var descriptor = new SparkViewDescriptor()
                .SetLanguage(LanguageType.Javascript)
                .AddTemplate("Clientside\\AnonymousTypeBecomesHashLikeObject.spark");

            var engine = new SparkViewEngine { ViewFolder = new FileSystemViewFolder("Spark.Tests.Views") };
            var entry = engine.CreateEntry(descriptor);

            Assert.IsNotNull(entry.SourceCode);
            Assert.IsNotEmpty(entry.SourceCode);

            Assert.That(entry.SourceCode, Text.Contains("x = {foo:\"bar\",quux:5}"));
            Assert.That(entry.SourceCode, Text.Contains("HelloWorld({id:23,data:x})"));
        }
Exemple #41
0
        public void CustomViewActivator()
        {
            var engine = new SparkViewEngine(
                new SparkSettings().SetPageBaseType(typeof(StubSparkView)))
                             {
                                 ViewActivatorFactory = new CustomFactory(),
                                 ViewFolder = new InMemoryViewFolder { { "hello/world.spark", "<p>hello world</p>" } }
                             };

            var descriptor = new SparkViewDescriptor().AddTemplate("hello/world.spark");
            var view = engine.CreateInstance(descriptor);

            Assert.IsNotNull(view);
            Assert.IsAssignableFrom(typeof(TestView), view);
        }
Exemple #42
0
        public void Init()
        {
            settings = new SparkSettings().SetPageBaseType("Spark.Tests.Stubs.StubSparkView");
            engine   = new SparkViewEngine(settings)
            {
                ViewFolder = new FileSystemViewFolder("Spark.Tests.Views")
            };
            factory = new StubViewFactory {
                Engine = engine
            };

            sb = new StringBuilder();


            mocks = new MockRepository();
        }
        public void UsingCSharpSyntaxInsideEngine()
        {
            // engine takes base class and IViewFolder
            var engine = new SparkViewEngine(
                new SparkSettings().SetPageBaseType("Spark.Tests.Stubs.StubSparkView")) { SyntaxProvider = _syntax, ViewFolder = new FileSystemViewFolder("Spark.Tests.Views") };

            // describe and instantiate view
            var descriptor = new SparkViewDescriptor();
            descriptor.Templates.Add("Code\\simplecode.spark");
            var view = (StubSparkView)engine.CreateInstance(descriptor);

            // provide data and render
            view.ViewData["hello"] = "world";
            var code = view.RenderView();

            Assert.IsNotNull(code);
        }
        protected override void Configure()
        {
            var settings = new SparkSettings();
            settings.SetNullBehaviour(NullBehaviour.Strict);
            var sparkViewEngine = new SparkViewEngine(settings);
            serviceProvider.AddService(typeof(ISparkViewEngine), sparkViewEngine);

            factory = new SparkViewFactory();
            factory.Service(serviceProvider);

            manager = new DefaultViewEngineManager();
            manager.Service(serviceProvider);
            serviceProvider.ViewEngineManager = manager;
            serviceProvider.AddService(typeof(IViewEngineManager), manager);

            manager.RegisterEngineForExtesionLookup(factory);
            manager.RegisterEngineForView(factory);
            factory.Service(serviceProvider);
        }
        public void SectionAsSegmentAndRenderPrefixes()
        {
            var settings = new SparkSettings()
                .SetPageBaseType(typeof (StubSparkView))
                .SetParseSectionTagAsSegment(true);

            var engine = new SparkViewEngine(settings)
            {
                ViewFolder = new FileSystemViewFolder("Spark.Tests.Views")
            };

            var view =
                (StubSparkView)
                engine.CreateInstance(new SparkViewDescriptor().AddTemplate("Prefix\\section-render-prefix.spark"));
            var output = new StringWriter();
            view.RenderView(output);

            ContainsInOrder(output.ToString(),
                            "<p>one</p>",
                            "<p>two</p>",
                            "<p>three</p>",
                            "<macro:ignored>ignored</macro:ignored>",
                            "<content:ignored>ignored</content:ignored>",
                            "<use:ignored>ignored</use:ignored>",
                            "<render:ignored>ignored</render:ignored>",
                            "<section:ignored>ignored</section:ignored>"
                );
        }
 public void TypeFileSystemCreatesFileSystemViewFolder()
 {
     var settings = new SparkSettings()
         .AddViewFolder(ViewFolderType.FileSystem, new Dictionary<string, string>
                                                       {
                                                           {"basePath", @"e:\no\such\path"}
                                                       });
     var engine = new SparkViewEngine(settings);
     var folder = engine.ViewFolder;
     Assert.IsAssignableFrom(typeof(CombinedViewFolder), folder);
     var combined = (CombinedViewFolder)folder;
     Assert.IsAssignableFrom(typeof(FileSystemViewFolder), combined.Second);
     var fileSystemViewFolder = (FileSystemViewFolder)combined.Second;
     Assert.AreEqual(@"e:\no\such\path", fileSystemViewFolder.BasePath);
 }
        public void UseAssemblyAndNamespaceFromSettings()
        {
            var settings = new SparkSettings()
                .AddNamespace("System.Web")
                .AddAssembly("System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")
                .SetPageBaseType(typeof(StubSparkView));

            var views = new InMemoryViewFolder();
            views.Add("Home\\Index.spark", "<div>${ProcessStatus.Alive}</div>");

            var engine = new SparkViewEngine(settings) {ViewFolder = views};

            var descriptor = new SparkViewDescriptor();
            descriptor.Templates.Add("home\\index.spark");

            var contents = engine.CreateInstance(descriptor).RenderView();
            Assert.AreEqual("<div>Alive</div>", contents);
        }
        public void UnicodeCharactersSurviveConversionToByteArrayAndBack()
        {
            var folder = new InMemoryViewFolder();
            folder.Add("Home\\fr.spark", "Fran\u00E7ais");
            folder.Add("Home\\ru.spark", "\u0420\u0443\u0441\u0441\u043A\u0438\u0439");
            folder.Add("Home\\ja.spark", "\u65E5\u672C\u8A9E");

            Assert.That(ReadToEnd(folder, "Home\\fr.spark"), Is.EqualTo("Français"));
            Assert.That(ReadToEnd(folder, "Home\\ru.spark"), Is.EqualTo("Русский"));
            Assert.That(ReadToEnd(folder, "Home\\ja.spark"), Is.EqualTo("日本語"));

            var settings = new SparkSettings().SetPageBaseType(typeof(StubSparkView));
            var engine = new SparkViewEngine(settings) { ViewFolder = folder };
            Assert.That(RenderView(engine, "Home\\fr.spark"), Is.EqualTo("Français"));
            Assert.That(RenderView(engine, "Home\\ru.spark"), Is.EqualTo("Русский"));
            Assert.That(RenderView(engine, "Home\\ja.spark"), Is.EqualTo("日本語"));
        }
        private ISparkView CreateView(IViewFolder viewFolder, string template)
        {
            CompiledViewHolder.Current = new CompiledViewHolder();

            var settings = new SparkSettings().SetPageBaseType(typeof(StubSparkView));

            var engine = new SparkViewEngine(settings)
                             {
                                 ViewFolder = viewFolder
                             };

            return engine.CreateInstance(new SparkViewDescriptor().AddTemplate(template));
        }
        public void PrefixFromSettings()
        {
            var settings = new SparkSettings()
                .SetPageBaseType(typeof(StubSparkView))
                .SetPrefix("s");

            var engine = new SparkViewEngine(settings)
                             {
                                 ViewFolder = new FileSystemViewFolder("Spark.Tests.Views")
                             };

            var view = (StubSparkView)engine.CreateInstance(new SparkViewDescriptor().AddTemplate("Prefix\\prefix-from-settings.spark"));
            view.ViewData["Names"] = new[] { "alpha", "beta", "gamma" };

            var output = new StringWriter();
            view.RenderView(output);

            ContainsInOrder(output.ToString(),
                            "<li", "alpha", "</li>",
                            "<li", "beta", "</li>",
                            "<li", "gamma", "</li>",
                            "<var x=\"1/0\">element ignored</var>",
                            "<p each=\"5\">attribute ignored</p>"
                );
        }
        public void Init()
        {
            settings = new SparkSettings().SetPageBaseType("Spark.Tests.Stubs.StubSparkView");
            engine = new SparkViewEngine(settings) { ViewFolder = new FileSystemViewFolder("Spark.Tests.Views") };
            factory = new StubViewFactory { Engine = engine };

            sb = new StringBuilder();

            mocks = new MockRepository();
        }
 public void Init()
 {
     engine = new SparkViewEngine(new SparkSettings().SetPageBaseType("Spark.Tests.Stubs.StubSparkView"))
                  {ViewFolder = new FileSystemViewFolder("Spark.Tests.Views")};
     engine.ExtensionFactory = new StubExtensionFactory();
 }