Exemple #1
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();
    }
 public void FileNotFoundException()
 {
     var folder = new InMemoryViewFolder();
     folder.Add(Path.Combine("Home", "Index.spark"), "stuff");
     Assert.That(() => folder.GetViewSource(Path.Combine("Home", "List.spark")),
                 Throws.TypeOf<FileNotFoundException>());
 }
Exemple #3
0
        public void PdfResultShouldWriteToOutputStream()
        {
            var settings   = new SparkSettings();
            var viewFolder = new InMemoryViewFolder
            {
                {
                    "foo/bar.spark",
                    HelloWorldXml
                }
            };
            var factory = new SparkViewFactory(settings)
            {
                ViewFolder = viewFolder
            };

            var stream            = new MemoryStream();
            var controllerContext = GetControllerContext(stream);

            var result = new PdfViewResult
            {
                ViewEngineCollection = new ViewEngineCollection(new[] { factory })
            };

            result.ExecuteResult(controllerContext);

            Assert.That(stream.Length, Is.Not.EqualTo(0));
        }
Exemple #4
0
        public void EmptyMasterPreventsDefaultLayout()
        {
            var settings = new SparkSettings()
                .SetPageBaseType(typeof(StubSparkView));
            var container = new SparkServiceContainer(settings);

            var viewFolder = new InMemoryViewFolder
                             {
                                 {"Home\\Index.spark", "<use master=\"\"/><p>Hello world</p><content:title>bar</content:title>"},
                                 {"Layouts\\Application.spark", "<h1>alpha</h1><use:view/><p>beta</p>"}
                             };

            container.SetServiceBuilder<IViewFolder>(c => viewFolder);

            var engine = container.GetService<ISparkViewEngine>();

            var descriptor = new SparkViewDescriptor()
                .AddTemplate("Home\\Index.spark")
                .AddTemplate("Layouts\\Application.spark");

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

            Assert.AreEqual("<p>Hello world</p>", contents);
        }
Exemple #5
0
        public void PartialsInCascadingBaseFoldersAndSharedFoldersAreDiscovered()
        {
            var viewFolder = new InMemoryViewFolder
            {
                { "area1\\controller2\\view3.spark", "" },
                { "area1\\controller2\\Shared\\_alpha.spark", "" },
                { "area1\\Shared\\_beta.spark", "" },
                { "Shared\\_gamma.spark", "" },
                { "area1\\controller2\\_epsilon.spark", "" },
                { "area1\\_zeta.spark", "" },
                { "_eta.spark", "" },
                { "area1\\controller4\\_dontfind1.spark", "" },
                { "area1\\controller4\\Shared\\_dontfind2.spark", "" },
                { "area2\\Shared\\_dontfind3.spark", "" },
            };

            var viewLoader = new ViewLoader {
                ViewFolder = viewFolder
            };

            var partials = viewLoader.FindPartialFiles("area1\\controller2\\view3.spark");

            Assert.That(partials, Has.Some.EqualTo("alpha"));
            Assert.That(partials, Has.Some.EqualTo("beta"));
            Assert.That(partials, Has.Some.EqualTo("gamma"));
            Assert.That(partials, Has.Some.EqualTo("epsilon"));
            Assert.That(partials, Has.Some.EqualTo("zeta"));
            Assert.That(partials, Has.Some.EqualTo("eta"));
            Assert.That(partials, Has.None.EqualTo("dontfind1"));
            Assert.That(partials, Has.None.EqualTo("dontfind2"));
            Assert.That(partials, Has.None.EqualTo("dontfind3"));
        }
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 EmptyMasterPreventsDefaultLayout()
        {
            var settings = new SparkSettings()
                           .SetPageBaseType(typeof(StubSparkView));
            var container = new SparkServiceContainer(settings);

            var viewFolder = new InMemoryViewFolder
            {
                { "Home\\Index.spark", "<use master=\"\"/><p>Hello world</p><content:title>bar</content:title>" },
                { "Layouts\\Application.spark", "<h1>alpha</h1><use:view/><p>beta</p>" }
            };

            container.SetServiceBuilder <IViewFolder>(c => viewFolder);

            var engine = container.GetService <ISparkViewEngine>();

            var descriptor = new SparkViewDescriptor()
                             .AddTemplate("Home\\Index.spark")
                             .AddTemplate("Layouts\\Application.spark");

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

            engine.ReleaseInstance(view);

            Assert.AreEqual("<p>Hello world</p>", contents);
        }
Exemple #8
0
        private static ViewContext CompileView(string viewContents)
        {
            var settings  = new SparkSettings();
            var container = SparkRubyEngineStarter.CreateContainer(settings);

            var viewFolder = new InMemoryViewFolder {
                { string.Format("stub{0}index.spark", Path.DirectorySeparatorChar), viewContents }
            };

            container.SetServiceBuilder <IViewFolder>(c => viewFolder);
            var viewEngine = container.GetService <IViewEngine>();

            var httpContext = new StubHttpContext();


            var routeData = new RouteData();

            routeData.Values.Add("controller", "stub");
            routeData.Values.Add("action", "index");

            var controller        = new StubController();
            var controllerContext = new ControllerContext(httpContext, routeData, controller);

            var result = viewEngine.FindPartialView(controllerContext, "index", false);

            return(new ViewContext(controllerContext, result.View, new ViewDataDictionary(), new TempDataDictionary(), new StringWriter()));
        }
        public void ShouldReturnNameOfPartialsFound()
        {
            var viewFolder = new InMemoryViewFolder
            {
                { "Shared\\Application.spark", "<html><body><use content=\"main\" /></body></html>" },
                { "Shared\\_PartialMustBeFound.spark", "This partial should always be found" },
                { "Home\\index.spark", "Home Page" },
                { "Home\\_HomePartial.spark", "This Partial should only be found from Home" },
                { "Other\\index.spark", "Home Page" },
                { "Other\\_OtherPartial.spark", "This Partial should only be found from Other" },
            };

            _mockProjectExplorer.Expect(x => x.GetViewFolder()).Return(viewFolder);

            var homeExplorer = new ViewExplorer(_mockProjectExplorer, "Home\\index.spark");
            var homePartials = homeExplorer.GetRelatedPartials();

            var otherExplorer = new ViewExplorer(_mockProjectExplorer, "Other\\index.spark");
            var otherPartials = otherExplorer.GetRelatedPartials();

            Assert.That(homePartials.Count, Is.EqualTo(2));
            Assert.That(homePartials[0], Is.EqualTo("HomePartial"));
            Assert.That(homePartials[1], Is.EqualTo("PartialMustBeFound"));

            Assert.That(otherPartials.Count, Is.EqualTo(2));
            Assert.That(otherPartials[0], Is.EqualTo("OtherPartial"));
            Assert.That(otherPartials[1], Is.EqualTo("PartialMustBeFound"));
        }
Exemple #10
0
        public void PartialsInCascadingBaseFoldersAndSharedFoldersAreDiscovered()
        {
            var viewFolder = new InMemoryViewFolder
            {
                { Path.Combine("area1", "controller2", "view3.spark"), "" },
                { Path.Combine("area1", "controller2", "Shared", "_alpha.spark"), "" },
                { Path.Combine("area1", "Shared", "_beta.spark"), "" },
                { Path.Combine("Shared", "_gamma.spark"), "" },
                { Path.Combine("area1", "controller2", "_epsilon.spark"), "" },
                { Path.Combine("area1", "_zeta.spark"), "" },
                { "_eta.spark", "" },
                { Path.Combine("area1", "controller4", "_dontfind1.spark"), "" },
                { Path.Combine("area1", "controller4", "Shared", "_dontfind2.spark"), "" },
                { Path.Combine("area2", "Shared", "_dontfind3.spark"), "" },
            };

            var viewLoader = new ViewLoader {
                ViewFolder = viewFolder
            };

            var partials = viewLoader.FindPartialFiles(Path.Combine("area1", "controller2", "view3.spark"));

            Assert.That(partials, Has.Some.EqualTo("alpha"));
            Assert.That(partials, Has.Some.EqualTo("beta"));
            Assert.That(partials, Has.Some.EqualTo("gamma"));
            Assert.That(partials, Has.Some.EqualTo("epsilon"));
            Assert.That(partials, Has.Some.EqualTo("zeta"));
            Assert.That(partials, Has.Some.EqualTo("eta"));
            Assert.That(partials, Has.None.EqualTo("dontfind1"));
            Assert.That(partials, Has.None.EqualTo("dontfind2"));
            Assert.That(partials, Has.None.EqualTo("dontfind3"));
        }
Exemple #11
0
        public void PdfResultShouldWriteToOutputStream()
        {
            var settings = new SparkSettings();
            var viewFolder = new InMemoryViewFolder
                             {
                                 {
                                     "foo/bar.spark",
                                     HelloWorldXml
                                     }
                             };
            var factory = new SparkViewFactory(settings)
                          {
                              ViewFolder = viewFolder
                          };

            var stream = new MemoryStream();
            var controllerContext = GetControllerContext(stream);

            var result = new PdfViewResult
                         {
                             ViewEngineCollection = new ViewEngineCollection(new[] { factory })
                         };
            result.ExecuteResult(controllerContext);

            Assert.That(stream.Length, Is.Not.EqualTo(0));
        }
Exemple #12
0
        public void ShouldReturnNameOfPartialsFound()
        {
            var viewFolder = new InMemoryViewFolder
            {
                    {"Shared\\Application.spark","<html><body><use content=\"main\" /></body></html>"},
                    {"Shared\\_PartialMustBeFound.spark","This partial should always be found"},
                    {"Home\\index.spark","Home Page"},
                    {"Home\\_HomePartial.spark","This Partial should only be found from Home"},
                    {"Other\\index.spark","Home Page"},
                    {"Other\\_OtherPartial.spark","This Partial should only be found from Other"},
            };

            var homeExplorer = new ViewExplorer(viewFolder, "Home\\index.spark");
            var homePartials = homeExplorer.GetRelatedPartials();

            var otherExplorer = new ViewExplorer(viewFolder, "Other\\index.spark");
            var otherPartials = otherExplorer.GetRelatedPartials();

            Assert.That(homePartials.Count, Is.EqualTo(2));
            Assert.That(homePartials[0], Is.EqualTo("HomePartial"));
            Assert.That(homePartials[1], Is.EqualTo("PartialMustBeFound"));

            Assert.That(otherPartials.Count, Is.EqualTo(2));
            Assert.That(otherPartials[0], Is.EqualTo("OtherPartial"));
            Assert.That(otherPartials[1], Is.EqualTo("PartialMustBeFound"));
        }
 public void HashCanBeUsedToDeclareStatementsInsteadOfOutputExpressions()
 {
     var viewFolder = new InMemoryViewFolder { { "bindings.xml", "<bindings><element name='foo'><start>#bar;</start><end>#quux;</end></element></bindings>" } };
     var provider = new DefaultBindingProvider();
     var bindings = provider.GetBindings(viewFolder).ToList();
     Assert.That(bindings[0].Phrases.All(phrase => phrase.Type == BindingPhrase.PhraseType.Statement));
 }
        public void FileNotFoundException()
        {
            var folder = new InMemoryViewFolder();

            folder.Add("Home\\Index.spark", "stuff");
            folder.GetViewSource("Home\\List.spark");
        }
 public void Init()
 {
     _folder = new InMemoryViewFolder
     {
         { "Home\\Index.spark", "alpha" }
     };
     _adapter = new LanguageKit.Folder(_folder);
 }
        public void FileNotFoundException()
        {
            var folder = new InMemoryViewFolder();

            folder.Add(Path.Combine("Home", "Index.spark"), "stuff");
            Assert.That(() => folder.GetViewSource(Path.Combine("Home", "List.spark")),
                        Throws.TypeOf <FileNotFoundException>());
        }
 public void Init()
 {
     _folder = new InMemoryViewFolder
                   {
                       {string.Format("Home{0}Index.spark", Path.DirectorySeparatorChar), "alpha"}
                   };
     _adapter = new LanguageKit.Folder(_folder);
 }
Exemple #18
0
        public void MissingFileDoesNotCauseException()
        {
            var viewFolder = new InMemoryViewFolder();
            var provider   = new DefaultBindingProvider();
            var bindings   = provider.GetBindings(new BindingRequest(viewFolder)).ToList();

            Assert.That(bindings.Count, Is.EqualTo(0));
        }
 public void Init()
 {
     _folder = new InMemoryViewFolder
                   {
                       {"Home\\Index.spark", "alpha"}
                   };
     _adapter = new LanguageKit.Folder(_folder);
 }
        public void MissingFileDoesNotCauseException()
        {
            var viewFolder = new InMemoryViewFolder();
            var provider = new DefaultBindingProvider();
            var bindings = provider.GetBindings(viewFolder).ToList();

            Assert.That(bindings.Count, Is.EqualTo(0));
        }
 public void Init()
 {
     _folder = new InMemoryViewFolder
     {
         { string.Format("Home{0}Index.spark", Path.DirectorySeparatorChar), "alpha" }
     };
     _adapter = new LanguageKit.Folder(_folder);
 }
Exemple #22
0
        public void Init()
        {
            _factory            = new SparkViewFactory(null);
            _viewFolder         = new InMemoryViewFolder();
            _factory.ViewFolder = _viewFolder;
            var controller = new StubController();

            _actionContext = new ActionContext(controller.GetType().Namespace, "Bar");
        }
Exemple #23
0
        public void ChildReferenceMayNotAppearInEndPhrase()
        {
            var viewFolder = new InMemoryViewFolder {
                { "bindings.xml", "<bindings><element name='foo'><start>foo</start><end>child::*</end></element></bindings>" }
            };
            var provider = new DefaultBindingProvider();

            Assert.That(() => provider.GetBindings(new BindingRequest(viewFolder)).ToList(), Throws.TypeOf <CompilerException>());
        }
Exemple #24
0
        public void ChildReferenceMayNotAppearInEndPhrase()
        {
            var viewFolder = new InMemoryViewFolder {
                { "bindings.xml", "<bindings><element name='foo'><start>foo</start><end>child::*</end></element></bindings>" }
            };
            var provider = new DefaultBindingProvider();

            provider.GetBindings(viewFolder).ToList();
        }
Exemple #25
0
 public DescriptorBuildingFixture()
 {
     this.viewFolder = new InMemoryViewFolder();
     this.engine     = new SparkViewEngine(null)
     {
         ViewFolder = viewFolder
     };
     this.actionContext = new ActionContext(A.Fake <HttpContextBase>(), "Bar");
 }
Exemple #26
0
        private static InMemoryViewFolder GetMemoryViewMap(IEnumerable <ViewLocationResult> viewLocationResults)
        {
            var memoryViewMap = new InMemoryViewFolder();

            foreach (var viewLocationResult in viewLocationResults)
            {
                memoryViewMap.Add(viewLocationResult.Location, viewLocationResult.Contents.Invoke().ReadToEnd());
            }
            return(memoryViewMap);
        }
Exemple #27
0
        public void HashCanBeUsedToDeclareStatementsInsteadOfOutputExpressions()
        {
            var viewFolder = new InMemoryViewFolder {
                { "bindings.xml", "<bindings><element name='foo'><start>#bar;</start><end>#quux;</end></element></bindings>" }
            };
            var provider = new DefaultBindingProvider();
            var bindings = provider.GetBindings(new BindingRequest(viewFolder)).ToList();

            Assert.That(bindings[0].Phrases.All(phrase => phrase.Type == BindingPhrase.PhraseType.Statement));
        }
 public void HasViewCaseInsensitive()
 {
     var folder = new InMemoryViewFolder();
     Assert.IsFalse(folder.HasView(Path.Combine("Home", "Index.spark")));
     folder.Add(Path.Combine("Home", "Index.spark"), "stuff");
     Assert.IsTrue(folder.HasView(Path.Combine("Home", "Index.spark")));
     Assert.IsFalse(folder.HasView(Path.Combine("Home", "Index")));
     Assert.IsTrue(folder.HasView(Path.Combine("Home", "index.spark")));
     Assert.IsTrue(folder.HasView(Path.Combine("home", "INDEX.SPARK")));
 }
        private IViewFolder GetViewFolder()
        {
            var folder = new InMemoryViewFolder();

            foreach (var c in this)
            {
                folder.Add(c.TemplateKey, c.InnerHtml);
            }
            return(folder);
        }
 public void HasViewCaseInsensitive()
 {
     var folder = new InMemoryViewFolder();
     Assert.IsFalse(folder.HasView("Home\\Index.spark"));
     folder.Add("Home\\Index.spark", "stuff");
     Assert.IsTrue(folder.HasView("Home\\Index.spark"));
     Assert.IsFalse(folder.HasView("Home\\Index"));
     Assert.IsTrue(folder.HasView("Home\\index.spark"));
     Assert.IsTrue(folder.HasView("home\\INDEX.SPARK"));
 }
        public void HasTemplate()
        {
            var first = new InMemoryViewFolder { { "one.txt", "one" } };
            var second = new InMemoryViewFolder { { "two.txt", "two" } };
            var viewFolder = new CombinedViewFolder(first, second);

            Assert.IsTrue(viewFolder.HasView("one.txt"));
            Assert.IsTrue(viewFolder.HasView("two.txt"));
            Assert.IsFalse(viewFolder.HasView("three.txt"));
        }
        public void HasViewCaseInsensitive()
        {
            var folder = new InMemoryViewFolder();

            Assert.IsFalse(folder.HasView(Path.Combine("Home", "Index.spark")));
            folder.Add(Path.Combine("Home", "Index.spark"), "stuff");
            Assert.IsTrue(folder.HasView(Path.Combine("Home", "Index.spark")));
            Assert.IsFalse(folder.HasView(Path.Combine("Home", "Index")));
            Assert.IsTrue(folder.HasView(Path.Combine("Home", "index.spark")));
            Assert.IsTrue(folder.HasView(Path.Combine("home", "INDEX.SPARK")));
        }
        public void HasViewCaseInsensitive()
        {
            var folder = new InMemoryViewFolder();

            Assert.IsFalse(folder.HasView("Home\\Index.spark"));
            folder.Add("Home\\Index.spark", "stuff");
            Assert.IsTrue(folder.HasView("Home\\Index.spark"));
            Assert.IsFalse(folder.HasView("Home\\Index"));
            Assert.IsTrue(folder.HasView("Home\\index.spark"));
            Assert.IsTrue(folder.HasView("home\\INDEX.SPARK"));
        }
        public void BindingTableCanLoadFromViewFolder()
        {
            var viewFolder = new InMemoryViewFolder { { "bindings.xml", "<bindings><element name='foo'>bar</element></bindings>" } };
            var provider = new DefaultBindingProvider();
            var bindings = provider.GetBindings(viewFolder).ToList();

            Assert.That(bindings.Count, Is.EqualTo(1));
            Assert.That(bindings[0].ElementName, Is.EqualTo("foo"));
            Assert.That(bindings[0].Nodes.Count, Is.EqualTo(1));
            Assert.That(((BindingLiteral)bindings[0].Nodes[0]).Text, Is.EqualTo("bar"));
        }
        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 #36
0
        public HtmlGenerator(IEnumerable <KeyValuePair <string, string> > templates)
            : this()
        {
            var viewFolder = new InMemoryViewFolder();

            foreach (var pair in templates)
            {
                viewFolder.Add(pair.Key, pair.Value);
            }

            engine.ViewFolder = viewFolder;
        }
Exemple #37
0
        public HtmlGenerator(IEnumerable<KeyValuePair<string, string>> templates)
            : this()
        {
            var viewFolder = new InMemoryViewFolder();

            foreach (var pair in templates)
            {
                viewFolder.Add(pair.Key, pair.Value);
            }

            engine.ViewFolder = viewFolder;
        }
Exemple #38
0
        public void Init()
        {
            var settings = new SparkSettings()
                           .SetPageBaseType(typeof(StubSparkView));
            var container = new SparkServiceContainer(settings);

            _viewFolder = new InMemoryViewFolder();

            container.SetServiceBuilder <IViewFolder>(c => _viewFolder);

            _engine = container.GetService <ISparkViewEngine>();
        }
        public void OpenFromFirstViewFolder()
        {
            var first = new InMemoryViewFolder { { "one.txt", "one" } };
            var second = new InMemoryViewFolder { { "one.txt", "two" } };
            var viewFolder = new CombinedViewFolder(first, second);

            using (var reader = new StreamReader(viewFolder.GetViewSource("one.txt").OpenViewStream()))
            {
                var content = reader.ReadToEnd();
                Assert.AreEqual("one", content);
            }
        }
        public void OpenMissingFile()
        {
            var first = new InMemoryViewFolder {
                { "one.txt", "one" }
            };
            var second = new InMemoryViewFolder {
                { "two.txt", "two" }
            };
            var viewFolder = new CombinedViewFolder(first, second);

            viewFolder.GetViewSource("three.txt");
        }
        public void ListFilesWithDedupe()
        {
            var first = new InMemoryViewFolder { { "home\\three.txt", "three" }, { "home\\one.txt", "one" } };
            var second = new InMemoryViewFolder { { "home\\two.txt", "two" }, { "home\\three.txt", "three" } };
            var viewFolder = new CombinedViewFolder(first, second);

            var views = viewFolder.ListViews("home");
            Assert.AreEqual(3, views.Count);
            Assert.Contains("home\\one.txt", views.ToArray());
            Assert.Contains("home\\two.txt", views.ToArray());
            Assert.Contains("home\\three.txt", views.ToArray());
        }
Exemple #42
0
        public void OpenMissingFile()
        {
            var first = new InMemoryViewFolder {
                { "one.txt", "one" }
            };
            var second = new InMemoryViewFolder {
                { "two.txt", "two" }
            };
            var viewFolder = new CombinedViewFolder(first, second);

            Assert.That(() => viewFolder.GetViewSource("three.txt"), Throws.TypeOf <FileNotFoundException>());
        }
        private static HtmlResponse GetViewResponse <T>(byte[] viewTemplate, IEnumerable <string> namespaces, Action <T> populateView = null)
            where T : AbstractSparkView
        {
            return(new HtmlResponse(
                       () =>
            {
                Type viewType = typeof(T);
                SparkSettings settings = new SparkSettings()
                                         .SetPageBaseType(viewType)
                                         .SetDebug(false);

                foreach (string @namespace in namespaces.Distinct())
                {
                    settings.AddNamespace(@namespace);
                }

                var container = new SparkServiceContainer(settings);
                var viewFolder = new InMemoryViewFolder();

                container.SetServiceBuilder <IViewFolder>(arg => viewFolder);
                var viewEngine = container.GetService <ISparkViewEngine>();
                string viewKey = viewType.Name.Replace("View", "") + ".spark";
                const string applicationKey = @"Layouts\application.spark";

                viewFolder.AddLayoutsPath("Layouts");
                viewFolder.Add(viewKey, viewTemplate);
                viewFolder.Add(applicationKey, ResponseResources.Application);

                SparkViewDescriptor descriptor = new SparkViewDescriptor()
                                                 .AddTemplate(viewKey)
                                                 .AddTemplate(applicationKey);
                var view = (T)viewEngine.CreateInstance(descriptor);

                try
                {
                    if (populateView != null)
                    {
                        populateView(view);
                    }

                    var writer = new StringWriter();

                    view.RenderView(writer);

                    return writer.ToString();
                }
                finally
                {
                    viewEngine.ReleaseInstance(view);
                }
            }));
        }
Exemple #44
0
        public HtmlGenerator(IEnumerable <KeyValuePair <string, string> > templates)
            : this()
        {
            var viewFolder = new InMemoryViewFolder();

            foreach (var pair in templates)
            {
                viewFolder.Add(pair.Key, pair.Value);
            }

            engine.ViewFolder = viewFolder;
            // CompiledViewHolder.= null; // reset the cached views
        }
        public PageGenerator(IResourceManager resourceManager)
        {
            var template = resourceManager.GetStringFromAssemblyOf<PageGenerator>("Forseti.Pages.Spark.Harness.spark");

            var settings = new SparkSettings().SetPageBaseType(typeof(HarnessView));
            var templates = new InMemoryViewFolder();
            _engine = new SparkViewEngine(settings)
            {
                ViewFolder = templates
            };
            templates.Add(TemplateName, template); 
            _descriptor = new SparkViewDescriptor().AddTemplate(TemplateName);
        }
        public void Init()
        {
            _factory            = new SparkViewFactory();
            _viewFolder         = new InMemoryViewFolder();
            _factory.ViewFolder = _viewFolder;

            var httpContext = MockRepository.GenerateStub <HttpContextBase>();

            _routeData = new RouteData();
            var controller = MockRepository.GenerateStub <ControllerBase>();

            _controllerContext = new ControllerContext(httpContext, _routeData, controller);
        }
        public void Init(bool automaticEncoding)
        {
            _settings = new SparkSettings()
                        .SetPageBaseType(typeof(StubSparkView))
                        .SetAutomaticEncoding(automaticEncoding);
            var container = new SparkServiceContainer(_settings);

            _viewFolder = new InMemoryViewFolder();

            container.SetServiceBuilder <IViewFolder>(c => _viewFolder);

            _engine = container.GetService <ISparkViewEngine>();
        }
Exemple #48
0
        public HtmlGenerator(IEnumerable<KeyValuePair<string, string>> templates)
            : this()
        {
            var viewFolder = new InMemoryViewFolder();

            foreach (var pair in templates)
            {
                viewFolder.Add(pair.Key, pair.Value);
            }

            engine.ViewFolder = viewFolder;
            CompiledViewHolder.Current = null; // reset the cached views
        }
Exemple #49
0
        public void ShouldRecogniseVariablesDeclaredInTheSameFile()
        {
            var filePath = "test\\TwoVars.spark";
            var fileContent = "<var theNumberFive=\"5\" theNumberThree=\"3\" />";
            var viewFolder = new InMemoryViewFolder { { filePath, fileContent } };

            var viewExplorer = new ViewExplorer(viewFolder, filePath);
            IList<string> vars = viewExplorer.GetLocalVariables();

            Assert.That(vars.Count, Is.EqualTo(2));
            Assert.That(vars[0], Is.EqualTo("theNumberFive"));
            Assert.That(vars[1], Is.EqualTo("theNumberThree"));
        }
Exemple #50
0
        public PageGenerator(IResourceManager resourceManager, IFramework framework)
        {
            var template = resourceManager.GetStringFromAssemblyOf<PageGenerator>("Forseti.Pages.Spark.Harness.spark");

            _framework = framework;

            var settings = new SparkSettings().SetPageBaseType(typeof(HarnessView));
            var templates = new InMemoryViewFolder();
            _engine = new SparkViewEngine(settings)
            {
                ViewFolder = templates
            };
            templates.Add(TemplateName, template); //"<for each=\"var s in Stuff\"><p>${s}</p></for>");
            _descriptor = new SparkViewDescriptor().AddTemplate(TemplateName);
        }
        public void ShouldRecogniseMacrosDeclaredInTheSameFile()
        {
            var filePath = "test\\TwoMacros.spark";
            var fileContent = "<div><macro name=\"Macro1\">one</macro></div><div><macro name=\"Macro2\">two</macro></div>";
            var viewFolder = new InMemoryViewFolder { { filePath, fileContent } };

            _mockProjectExplorer.Expect(x => x.GetViewFolder()).Return(viewFolder);

            var viewExplorer = new ViewExplorer(_mockProjectExplorer, filePath);
            IList<string> macros = viewExplorer.GetLocalMacros();

            Assert.That(macros.Count, Is.EqualTo(2));
            Assert.That(macros[0], Is.EqualTo("Macro1"));
            Assert.That(macros[1], Is.EqualTo("Macro2"));
        }
        public void TwoPartBindingsAreRecognized()
        {
            var viewFolder = new InMemoryViewFolder { { "bindings.xml", "<bindings><element name='foo'><start>bar</start><end>quux</end></element></bindings>" } };
            var provider = new DefaultBindingProvider();
            var bindings = provider.GetBindings(viewFolder).ToList();

            Assert.That(bindings.Count, Is.EqualTo(1));
            Assert.That(bindings[0].ElementName, Is.EqualTo("foo"));
            Assert.That(bindings[0].Phrases.Count(), Is.EqualTo(2));
            Assert.That(bindings[0].Phrases.First().Nodes.Count, Is.EqualTo(1));
            Assert.That(bindings[0].Phrases.Last().Nodes.Count, Is.EqualTo(1));
            Assert.That(((BindingLiteral)bindings[0].Phrases.First().Nodes[0]).Text, Is.EqualTo("bar"));
            Assert.That(((BindingLiteral)bindings[0].Phrases.Last().Nodes[0]).Text, Is.EqualTo("quux"));
            Assert.That(bindings[0].Phrases.All(phrase => phrase.Type == BindingPhrase.PhraseType.Expression));
        }
        public void ShouldRecogniseMacroParameters()
        {
            var filePath = "test\\TwoMacrosSecondWithParam.spark";
            var fileContent = "<div><macro name=\"Macro1\">one</macro></div><div><macro name=\"Macro2\" param1=\"string\">two</macro></div>";
            var viewFolder = new InMemoryViewFolder { { filePath, fileContent } };

            _mockProjectExplorer.Expect(x => x.GetViewFolder()).Return(viewFolder);

            var viewExplorer = new ViewExplorer(_mockProjectExplorer, filePath);
            IList<string> macroParams = viewExplorer.GetMacroParameters("Macro1");
            Assert.That(macroParams.Count, Is.EqualTo(0));

            macroParams = viewExplorer.GetMacroParameters("Macro2");
            Assert.That(macroParams.Count, Is.EqualTo(1));
            Assert.That(macroParams[0], Is.EqualTo("param1"));
        }
Exemple #54
0
        public PageGenerator(IResourceManager resourceManager)
        {
            var template = resourceManager.GetStringFromAssemblyOf<PageGenerator>("Forseti.Pages.Spark.Harness.spark");
            _jqueryJs = resourceManager.GetStringFromAssemblyOf<Forseti.Scripting.ScriptEngine>("Forseti.Scripting.Scripts.jquery.min.js");
            _forsetiJs = resourceManager.GetStringFromAssemblyOf<Forseti.Scripting.ScriptEngine>("Forseti.Scripting.Scripts.forseti.js");
            _requireJs = resourceManager.GetStringFromAssemblyOf<Forseti.Scripting.ScriptEngine>("Forseti.Scripting.Scripts.require.js");
            _forsetiBootstrapperJs = resourceManager.GetStringFromAssemblyOf<Forseti.Scripting.ScriptEngine>("Forseti.Scripting.Scripts.forseti.bootstrapper.js");

            var settings = new SparkSettings().SetPageBaseType(typeof(HarnessView));
            var templates = new InMemoryViewFolder();
            _engine = new SparkViewEngine(settings)
            {
                ViewFolder = templates
            };
            templates.Add(TemplateName, template); 
            _descriptor = new SparkViewDescriptor().AddTemplate(TemplateName);
        }
        public void IterationInPartialFile()
        {
            var viewFolder = new InMemoryViewFolder
                                 {
                                     {"home\\index.spark", "<Guts items='new[]{1,2,3}'><section:each>${xIndex}</section:each></Guts>"},
                                     {"home\\_Guts.spark", "<for each='var x in items'><render:each/></for>"}
                                 };
            var loader = new ViewLoader { SyntaxProvider = new DefaultSyntaxProvider(ParserSettings.DefaultBehavior), ViewFolder = viewFolder };

            var chunks = loader.Load("home\\index.spark");

            var detectCode = new DetectCodeExpressionVisitor(null);
            var index = detectCode.Add("xIndex");
            var count = detectCode.Add("xCount");
            detectCode.Accept(chunks);

            Assert.IsTrue(index.Detected);
            Assert.IsFalse(count.Detected);
        }
        public void LastModifiedChanges()
        {
            var folder = new InMemoryViewFolder();
            folder.Add("Home\\Index.spark", "this is the file contents");
            var source1 = folder.GetViewSource("Home\\Index.spark");
            var lastModified1 = source1.LastModified;

            folder.Set("Home\\Index.spark", "this is the file contents");
            var source2 = folder.GetViewSource("Home\\Index.spark");
            var lastModified2 = source2.LastModified;

            Assert.AreNotEqual(lastModified1, lastModified2);

            var lastModified1b = source1.LastModified;
            var lastModified2b = source1.LastModified;

            Assert.AreNotEqual(lastModified1, lastModified1b);
            Assert.AreEqual(lastModified1b, lastModified2b);
        }
Exemple #57
0
        public void ForwardAndBackSlashAreInterchangeable()
        {
            var viewsFolder = new InMemoryViewFolder
            {
                {@"Home\Index.spark", "1"},
                {@"Shared\_global.spark", "2"},
                {@"Collision\Home\Baaz.spark", "6"}
            };
            var extraFolder = new InMemoryViewFolder
            {
                {@"Home\Foo.spark", "3"},
                {@"Home\Bar.spark", "4"},
                {@"Home\Quux.spark", "5"},
            };

            Assert.AreEqual(1, viewsFolder.ListViews(@"Collision/Home").Count);
            Assert.AreEqual(1, viewsFolder.ListViews(@"Collision\Home").Count);
            Assert.AreEqual(3, extraFolder.ListViews(@"Home").Count);

            var combinedFolder = viewsFolder
                .Append(new SubViewFolder(extraFolder, @"Extra/One"))
                .Append(new SubViewFolder(extraFolder, @"Extra\Two"))
                .Append(new SubViewFolder(extraFolder, @"Collision"));

            Assert.AreEqual(1, combinedFolder.ListViews("Home").Count);
            Assert.AreEqual(3, combinedFolder.ListViews(@"Extra/One/Home").Count);
            Assert.AreEqual(3, combinedFolder.ListViews(@"Extra\One/Home").Count);
            Assert.AreEqual(3, combinedFolder.ListViews(@"Extra/One\Home").Count);
            Assert.AreEqual(3, combinedFolder.ListViews(@"Extra\One\Home").Count);
            Assert.AreEqual(3, combinedFolder.ListViews(@"Extra/Two/Home").Count);
            Assert.AreEqual(3, combinedFolder.ListViews(@"Extra\Two/Home").Count);
            Assert.AreEqual(3, combinedFolder.ListViews(@"Extra/Two\Home").Count);
            Assert.AreEqual(3, combinedFolder.ListViews(@"Extra\Two\Home").Count);
            Assert.AreEqual(4, combinedFolder.ListViews(@"Collision/Home").Count);
            Assert.AreEqual(4, combinedFolder.ListViews(@"Collision\Home").Count);

            Assert.IsTrue(combinedFolder.HasView(@"Extra/One/Home/Bar.spark"));
            Assert.IsTrue(combinedFolder.HasView(@"Extra\One\Home\Bar.spark"));
            Assert.IsTrue(combinedFolder.HasView(@"Extra/Two/Home/Bar.spark"));
            Assert.IsTrue(combinedFolder.HasView(@"Extra\Two\Home\Bar.spark"));
        }
        private static ViewContext CompileView(string viewContents)
        {
            var settings = new SparkSettings();
            var container = SparkRubyEngineStarter.CreateContainer(settings);

            var viewFolder = new InMemoryViewFolder { { "stub\\index.spark", viewContents } };
            container.SetServiceBuilder<IViewFolder>(c => viewFolder);
            var viewEngine = container.GetService<IViewEngine>();

            var httpContext = new StubHttpContext();

            var routeData = new RouteData();
            routeData.Values.Add("controller", "stub");
            routeData.Values.Add("action", "index");

            var controller = new StubController();
            var controllerContext = new ControllerContext(httpContext, routeData, controller);

            var result = viewEngine.FindPartialView(controllerContext, "index", false);
            return new ViewContext(controllerContext, result.View, new ViewDataDictionary(), new TempDataDictionary(), new StringWriter());
        }
Exemple #59
0
        private static void Stub(FileSystemInfo source, FileSystemInfo destination)
        {
            if (source.FullName.EndsWith(".spark"))
            {
                // At this time the destination is already copied and processed by
                // 'simple' text substitution, so destination should be processed.
                var settings = new SparkSettings();
                settings.AddNamespace("System");

                var engine = new SparkViewEngine(settings) {DefaultPageBaseType = typeof(Template).FullName};
                var folder = new InMemoryViewFolder {{source.Name, File.ReadAllText(destination.FullName)}};
                engine.ViewFolder = folder;

                var descriptor = new SparkViewDescriptor();
                descriptor.AddTemplate(source.Name);

                var view = (Template) engine.CreateInstance(descriptor);
                var builder = new StringBuilder();
                using (var output = new StringWriter(builder))
                {
                    view.RenderView(output);
                    File.WriteAllText(destination.FullName, output.ToString());
                }

                engine.ReleaseInstance(view);
            }
            else if (source.FullName.EndsWith(".tt"))
            {
                var generator = new TemplateGenerator();
                if (!generator.ProcessTemplate(source.FullName, destination.FullName))
                {
                    var exception = new TemplateException(source.FullName);
                    foreach (CompilerError error in generator.Errors)
                    {
                        exception.AddError(error.ErrorText);
                    }
                    throw exception;
                }
            }
        }
Exemple #60
0
        public void Init()
        {
            CompiledViewHolder.Current = new CompiledViewHolder();

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

            _viewFolder = new InMemoryViewFolder();

            container.SetServiceBuilder<IViewFolder>(c => _viewFolder);

            _engine = container.GetService<ISparkViewEngine>();
        }