public void TestExtensions() { var descriptor = new SparkViewDescriptor(); descriptor.Templates.Add("Home\\extensionelements.spark"); var entry = engine.CreateEntry(engine.CreateKey(descriptor)); Assert.That(entry.Compiler.SourceCode.Contains("//this was a test")); }
public override ViewCompiler CreateViewCompiler(ISparkViewEngine engine, SparkViewDescriptor descriptor) { ViewCompiler viewCompiler; switch (descriptor.Language) { case LanguageType.Default: case LanguageType.Python: viewCompiler = new PythonViewCompiler(); break; default: return base.CreateViewCompiler(engine, descriptor); } var pageBaseType = engine.Settings.PageBaseType; if (string.IsNullOrEmpty(pageBaseType)) pageBaseType = engine.DefaultPageBaseType; viewCompiler.BaseClass = pageBaseType; viewCompiler.Descriptor = descriptor; viewCompiler.Debug = engine.Settings.Debug; viewCompiler.NullBehaviour = engine.Settings.NullBehaviour; viewCompiler.UseAssemblies = engine.Settings.UseAssemblies; viewCompiler.UseNamespaces = engine.Settings.UseNamespaces; return viewCompiler; }
public void CreatePythonViewCompiler() { var descriptor = new SparkViewDescriptor().SetLanguage(LanguageType.Python); var viewCompiler = _engine.LanguageFactory.CreateViewCompiler(_engine, descriptor); Assert.IsAssignableFrom(typeof(PythonViewCompiler), viewCompiler); }
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); }
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 CreateEntryForView() { var descriptor = new SparkViewDescriptor().SetLanguage(LanguageType.Python); var entry = _engine.CreateEntry(descriptor); var view = entry.CreateInstance(); Assert.IsInstanceOf(typeof(StubSparkView), view); }
public override ViewCompiler CreateViewCompiler(ISparkViewEngine engine, SparkViewDescriptor descriptor) { ViewCompiler viewCompiler; switch (descriptor.Language) { case LanguageType.Default: case LanguageType.Python: viewCompiler = new PythonViewCompiler(); break; default: return(base.CreateViewCompiler(engine, descriptor)); } var pageBaseType = engine.Settings.PageBaseType; if (string.IsNullOrEmpty(pageBaseType)) { pageBaseType = engine.DefaultPageBaseType; } viewCompiler.BaseClass = pageBaseType; viewCompiler.Descriptor = descriptor; viewCompiler.Debug = engine.Settings.Debug; viewCompiler.NullBehaviour = engine.Settings.NullBehaviour; viewCompiler.UseAssemblies = engine.Settings.UseAssemblies; viewCompiler.UseNamespaces = engine.Settings.UseNamespaces; return(viewCompiler); }
private SparkViewDescriptor BuildDescriptor(Template template, bool searchForMaster, ICollection<string> searchedLocations) { var descriptor = new SparkViewDescriptor { TargetNamespace = GetNamespaceEncodedPathViewPath(GetFullPath(template)) }; descriptor.Templates.Add(GetFullPath(template).Replace("\\", "/")); if (searchForMaster && TrailingUseMasterName(descriptor) == null) { LocatePotentialTemplate( PotentialDefaultMasterLocations(template), descriptor.Templates, null); } var trailingUseMaster = TrailingUseMasterName(descriptor); while (searchForMaster && !string.IsNullOrEmpty(trailingUseMaster)) { if (!LocatePotentialTemplate( PotentialMasterLocations(template, trailingUseMaster), descriptor.Templates, searchedLocations)) { return null; } trailingUseMaster = TrailingUseMasterName(descriptor); } return descriptor; }
public SparkViewToken(ActionCall actionCall, SparkViewDescriptor matchedDescriptor, string actionName, string viewName) { _actionCall = actionCall; _matchedDescriptor = matchedDescriptor; _actionName = actionName; _viewName = viewName; }
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 string Convert(string templateName, ViewData data, string relativeOutputPath) { string template = templateName; if (template.StartsWith(templatePath)) { template = template.Substring(templatePath.Length + 1); } SparkViewDescriptor descriptor = new SparkViewDescriptor() .AddTemplate(template); var view = (SparkTemplateBase)engine.CreateInstance(descriptor); using (var writer = new StringWriter()) { try { view.RelativeOutputPath = relativeOutputPath; view.ViewData = data; view.RenderView(writer); } finally { engine.ReleaseInstance(view); } return(writer.ToString()); } }
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); }
private string RenderView(SparkViewDescriptor descriptor) { var view = _engine.CreateInstance(descriptor); var contents = view.RenderView(); _engine.ReleaseInstance(view); return(contents); }
private void AddAccessor(SparkViewDescriptor descriptor, bool isNew, Type modelType, string propertyName, string baseExpression) { if (modelType.GetCustomAttributes(typeof(CompilerGlobalScopeAttribute), false).Any()) { modelType = modelType.BaseType; } descriptor.AddAccessor((isNew ? "new " : "") + modelType + " " + propertyName, baseExpression + " as " + modelType); }
static string RenderView(ISparkViewEngine engine, string path) { var descriptor = new SparkViewDescriptor() .AddTemplate(path); return(engine .CreateInstance(descriptor) .RenderView()); }
private static void AssertDescriptorTemplates(SparkViewDescriptor descriptor, IEnumerable <string> searchedLocations, params string[] templates) { templates.ShouldHaveCount(descriptor.Templates.Count); for (var index = 0; index != templates.Length; ++index) { templates[index].ShouldEqual(descriptor.Templates[index]); } searchedLocations.ShouldHaveCount(0); }
public SparkRenderer() { var factory = new SparkViewEngineFactory(); _engine = factory.CreateViewEngine(); _report = new SparkViewDescriptor().AddTemplate(SparkViewEngineFactory.ReportTemplate); _index = new SparkViewDescriptor().AddTemplate(SparkViewEngineFactory.IndexTemplate); }
public SparkViewToken(ActionCall actionCall, SparkViewDescriptor matchedDescriptor, string actionName, string viewName) { _actionCall = actionCall; _matchedDescriptor = matchedDescriptor; _actionName = actionName; _viewName = viewName; _descriptors = new List <SparkViewDescriptor>(); }
public void TestExtensions() { var descriptor = new SparkViewDescriptor(); descriptor.Templates.Add("Home\\extensionelements.spark"); var entry = engine.CreateEntry(descriptor); Assert.That(entry.SourceCode.Contains("//this was a test")); }
public void descriptors_with_normal_view_and_no_default_layout() { _actionContext.Params.Add("controller", "Bar"); _viewFolder.Add(@"Bar\Index.spark", ""); SparkViewDescriptor result = _factory.CreateDescriptor(_actionContext, "Index", null, true, new List <string>()); AssertDescriptorTemplates(result, new List <string>(), @"Bar\Index.spark"); }
protected override void beforeEach() { _cache = new Dictionary <int, ISparkViewEntry>(); _descriptor = new SparkViewDescriptor(); _descriptor.AddTemplate("Views/Home/Home.spark"); _engine = MockFor <ISparkViewEngine>(); Services.Inject(_cache); Services.Inject(_descriptor); }
private static SparkViewDescriptor Desc(params string[] templates) { var desc = new SparkViewDescriptor(); foreach (string template in templates) { desc.AddTemplate(template); } return(desc); }
public void descriptors_with_normal_view_and_empty_master() { _actionContext.Params.Add("controller", "Bar"); _viewFolder.Add(@"Layouts\Application.spark", ""); _viewFolder.Add(@"Bar\Index.spark", "<use master=''/>"); SparkViewDescriptor result = _factory.CreateDescriptor(_actionContext, "Index", null, true, new List <string>()); AssertDescriptorTemplates(result, new List <string>(), @"Bar\Index.spark"); }
public SparkRenderer() { var factory = new SparkViewEngineFactory(); _engine = factory.CreateViewEngine(); _engine.LoadBatchCompilation(Assembly.Load(factory.TemplateAssembly)); _report = new SparkViewDescriptor().AddTemplate(SparkViewEngineFactory.ReportTemplate); _index = new SparkViewDescriptor().AddTemplate(SparkViewEngineFactory.IndexTemplate); }
private static void appendMasterPage(SparkViewDescriptor descriptor, ISparkTemplate template) { if (template == null) { return; } descriptor.AddTemplate(template.ViewPath); appendMasterPage(descriptor, template.Master as ISparkTemplate); }
private SparkViewDescriptor createSparkDescriptor(bool useMaster) { var sparkDescriptor = new SparkViewDescriptor().AddTemplate(_descriptor.ViewPath); if (useMaster && _descriptor.Master != null) { sparkDescriptor.AddTemplate(_descriptor.Master.ViewPath); } return(sparkDescriptor); }
private static SparkViewDescriptor createSparkDescriptor(bool useMaster, ViewDescriptor viewDescriptor) { var sparkDescriptor = new SparkViewDescriptor().AddTemplate(viewDescriptor.ViewPath); if (useMaster && viewDescriptor.Master != null) { appendMasterPage(sparkDescriptor, viewDescriptor.Master); } return(sparkDescriptor); }
public virtual SparkViewDescriptor BuildDescriptor(BuildDescriptorParams buildDescriptorParams, ICollection <string> searchedLocations) { var descriptor = new SparkViewDescriptor { TargetNamespace = GetNamespaceEncodedPathViewPath(buildDescriptorParams.ViewPath) }; if (!LocatePotentialTemplate( PotentialViewLocations(buildDescriptorParams.ViewPath, buildDescriptorParams.ViewName, buildDescriptorParams.Extra), descriptor.Templates, searchedLocations)) { return(null); } if (!string.IsNullOrEmpty(buildDescriptorParams.MasterName)) { if (!LocatePotentialTemplate( PotentialMasterLocations(buildDescriptorParams.MasterName, buildDescriptorParams.Extra), descriptor.Templates, searchedLocations)) { return(null); } } else if (buildDescriptorParams.FindDefaultMaster && TrailingUseMasterName(descriptor) == null /*empty is a valid value*/) { LocatePotentialTemplate( PotentialDefaultMasterLocations(buildDescriptorParams.ViewPath, buildDescriptorParams.Extra), descriptor.Templates, null); } var trailingUseMaster = TrailingUseMasterName(descriptor); while (buildDescriptorParams.FindDefaultMaster && !string.IsNullOrEmpty(trailingUseMaster)) { if (!LocatePotentialTemplate( PotentialMasterLocations(trailingUseMaster, buildDescriptorParams.Extra), descriptor.Templates, searchedLocations)) { return(null); } trailingUseMaster = TrailingUseMasterName(descriptor); } return(descriptor); }
private SparkViewDescriptor createSparkDescriptor(bool useMaster) { var sparkDescriptor = new SparkViewDescriptor().AddTemplate(ViewPath); if (useMaster && Master != null) { appendMasterPage(sparkDescriptor, (ISparkTemplate)Master); } return(sparkDescriptor); }
public override ViewCompiler CreateViewCompiler(ISparkViewEngine engine, SparkViewDescriptor descriptor) { Initialize(); var viewCompiler = base.CreateViewCompiler(engine, descriptor); if (viewCompiler is RubyViewCompiler) { ((RubyViewCompiler)viewCompiler).ScriptHeader = _scriptHeader; } return(viewCompiler); }
public void descriptors_with_route_area_present_should_default_to_normal_location() { _actionContext.Params.Add("area", "SomeFooArea"); _actionContext.Params.Add("controller", "Bar"); _viewFolder.Add(@"Bar\Index.spark", ""); _viewFolder.Add(@"Layouts\Application.spark", ""); SparkViewDescriptor result = _factory.CreateDescriptor(_actionContext, "Index", null, true, new List <string>()); AssertDescriptorTemplates(result, new List <string>(), @"Bar\Index.spark", @"Layouts\Application.spark"); }
public void RenderView(StubViewContext viewContext) { var descriptor = new SparkViewDescriptor(); descriptor.Templates.Add(viewContext.ControllerName + "\\" + viewContext.ViewName + ".spark"); if (viewContext.MasterName != null) descriptor.Templates.Add("Shared\\" + viewContext.MasterName + ".spark"); var sparkView = Engine.CreateInstance(descriptor); ((StubSparkView)sparkView).ViewData = viewContext.Data; sparkView.RenderView(new StringWriter(viewContext.Output)); }
public SparkViewDescriptor BuildDescriptor(BuildDescriptorParams buildDescriptorParams, ICollection <string> searchedLocations) { var descriptor = new SparkViewDescriptor { TargetNamespace = buildDescriptorParams.ActionNamespace }; if (!LocatePotentialTemplate( PotentialViewLocations(buildDescriptorParams.AcionName, buildDescriptorParams.ViewName, buildDescriptorParams.Extra), descriptor.Templates, searchedLocations)) { return(null); } if (!string.IsNullOrEmpty(buildDescriptorParams.MasterName)) { if (!LocatePotentialTemplate( PotentialMasterLocations(buildDescriptorParams.MasterName, buildDescriptorParams.Extra), descriptor.Templates, searchedLocations)) { return(null); } } else if (buildDescriptorParams.FindDefaultMaster && TrailingUseMasterName(descriptor) == null) { LocatePotentialTemplate( PotentialDefaultMasterLocations(buildDescriptorParams.AcionName, buildDescriptorParams.Extra), descriptor.Templates, null); } string trailingUseMaster = TrailingUseMasterName(descriptor); while (buildDescriptorParams.FindDefaultMaster && !string.IsNullOrEmpty(trailingUseMaster)) { if (!LocatePotentialTemplate( PotentialMasterLocations(trailingUseMaster, buildDescriptorParams.Extra), descriptor.Templates, searchedLocations)) { return(null); } trailingUseMaster = TrailingUseMasterName(descriptor); } return(descriptor); }
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); }
public virtual SparkViewDescriptor BuildDescriptor(BuildDescriptorParams buildDescriptorParams, ICollection<string> searchedLocations) { var descriptor = new SparkViewDescriptor { TargetNamespace = GetNamespaceEncodedPathViewPath(buildDescriptorParams.ViewPath) }; if (!LocatePotentialTemplate( PotentialViewLocations(buildDescriptorParams.ViewPath, buildDescriptorParams.ViewName, buildDescriptorParams.Extra), descriptor.Templates, searchedLocations)) { return null; } if (!string.IsNullOrEmpty(buildDescriptorParams.MasterName)) { if (!LocatePotentialTemplate( PotentialMasterLocations(buildDescriptorParams.MasterName, buildDescriptorParams.Extra), descriptor.Templates, searchedLocations)) { return null; } } else if (buildDescriptorParams.FindDefaultMaster && TrailingUseMasterName(descriptor) == null /*empty is a valid value*/) { LocatePotentialTemplate( PotentialDefaultMasterLocations(buildDescriptorParams.ViewPath, buildDescriptorParams.Extra), descriptor.Templates, null); } var trailingUseMaster = TrailingUseMasterName(descriptor); while (buildDescriptorParams.FindDefaultMaster && !string.IsNullOrEmpty(trailingUseMaster)) { if (!LocatePotentialTemplate( PotentialMasterLocations(trailingUseMaster, buildDescriptorParams.Extra ), descriptor.Templates, searchedLocations)) { return null; } trailingUseMaster = TrailingUseMasterName(descriptor); } return descriptor; }
public void descriptors_with_some_foo_area_folder_could_contain_controller_folder() { _actionContext.Params.Add("area", "SomeFooArea"); _actionContext.Params.Add("controller", "Bar"); _viewFolder.Add(@"Bar\Index.spark", ""); _viewFolder.Add(@"Layouts\Application.spark", ""); _viewFolder.Add(@"SomeFooArea\Bar\Index.spark", ""); SparkViewDescriptor result = _factory.CreateDescriptor(_actionContext, "Index", null, true, new List <string>()); AssertDescriptorTemplates(result, new List <string>(), @"SomeFooArea\Bar\Index.spark", @"Layouts\Application.spark"); }
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); }
public virtual SparkViewDescriptor BuildDescriptor(BuildDescriptorParams buildDescriptorParams, ICollection<string> searchedLocations) { var descriptor = new SparkViewDescriptor { TargetNamespace = buildDescriptorParams.TargetNamespace }; if (!LocatePotentialTemplate( PotentialViewLocations(buildDescriptorParams.ControllerName, buildDescriptorParams.ViewName, buildDescriptorParams.Extra), descriptor.Templates, searchedLocations)) { return null; } if (!string.IsNullOrEmpty(buildDescriptorParams.LayoutName)) { if (!LocatePotentialTemplate( PotentialMasterLocations(buildDescriptorParams.LayoutName, buildDescriptorParams.Extra), descriptor.Templates, searchedLocations)) { return null; } } else if (buildDescriptorParams.FindDefaultMaster && string.IsNullOrEmpty(TrailingUseMasterName(descriptor))) { LocatePotentialTemplate( PotentialDefaultMasterLocations(buildDescriptorParams.ControllerName, buildDescriptorParams.Extra), descriptor.Templates, null); } var trailingUseMaster = TrailingUseMasterName(descriptor); while (buildDescriptorParams.FindDefaultMaster && !string.IsNullOrEmpty(trailingUseMaster)) { if (!LocatePotentialTemplate( PotentialMasterLocations(trailingUseMaster, buildDescriptorParams.Extra), descriptor.Templates, searchedLocations)) { return null; } trailingUseMaster = TrailingUseMasterName(descriptor); } return descriptor; }
public void RenderView(StubViewContext viewContext, string extension = null) { var descriptor = new SparkViewDescriptor(); descriptor.Templates.Add(Path.Combine(viewContext.ControllerName, viewContext.ViewName + (extension ?? Constants.DotSpark))); if (viewContext.MasterName != null) descriptor.Templates.Add(Path.Combine(Constants.Shared, viewContext.MasterName + (extension ?? Constants.DotSpark))); var sparkView = Engine.CreateInstance(descriptor); ((StubSparkView)sparkView).ViewData = viewContext.Data; ((StubSparkView)sparkView).CacheService = CacheService; sparkView.RenderView(new StringWriter(viewContext.Output)); }
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})")); }
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); }
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); }
public string RenderTemplate(string templateSource, object data) { SetTemplateSource(templateSource); var descriptor = new SparkViewDescriptor(); descriptor.AddTemplate(TestingViewFolder.SingleTemplateName); var engine = sparkConfiguration.Container.GetService<ISparkViewEngine>(); var view = (SparkResourceView) engine.CreateInstance(descriptor); view.ViewData = new ViewData(data); var builder = new StringBuilder(); using (var writer = new StringWriter(builder)) { view.RenderView(writer); writer.Flush(); } return builder.ToString(); }
public void ContextAndControllerContextAvailable() { mocks.ReplayAll(); manager.Process("Home\\Index", output, engineContext, controller, controllerContext); var descriptor = new SparkViewDescriptor(); descriptor.Templates.Add("Home\\Index.spark"); descriptor.Templates.Add("Shared\\default.spark"); var entry = factory.Engine.GetEntry(descriptor); var view = (SparkView)entry.CreateInstance(); view.Contextualize(engineContext, controllerContext, factory, null); var result = new StringWriter(); view.RenderView(result); Assert.AreEqual(result.ToString(), output.ToString()); Assert.AreSame(engineContext, view.Context); Assert.AreSame(controllerContext, view.ControllerContext); }
public void DescriptorsAreEqual() { var descriptor = new SparkViewDescriptor() .SetTargetNamespace("Foo") .AddTemplate("Home\\Index.spark"); var assembly = engine.BatchCompilation(new[] { descriptor }); var types = assembly.GetTypes(); Assert.AreEqual(1, types.Count()); var attribs = types[0].GetCustomAttributes(typeof(SparkViewAttribute), false); var sparkViewAttrib = (SparkViewAttribute)attribs[0]; var key0 = descriptor; var key1 = sparkViewAttrib.BuildDescriptor(); Assert.AreEqual(key0, key1); }
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 string TrailingUseMasterName(SparkViewDescriptor descriptor) { var lastTemplate = descriptor.Templates.Last(); var sourceContext = AbstractSyntaxProvider.CreateSourceContext(lastTemplate, _engine.ViewFolder); if (sourceContext == null) return null; var result = ParseUseMaster(new Position(sourceContext)); return result == null ? null : result.Value; }
private static void AssertDescriptorTemplates(SparkViewDescriptor descriptor, IEnumerable<string> searchedLocations, params string[] templates) { templates.ShouldHaveCount(descriptor.Templates.Count); for (int index = 0; index != templates.Length; ++index) templates[index].ShouldEqual(descriptor.Templates[index]); searchedLocations.ShouldHaveCount(0); }
public void SparkViewDescriptorTargetNamespaceNullAndEmptyAreEqual() { var desc1 = new SparkViewDescriptor() .AddTemplate("foo.spark") .SetTargetNamespace(null); var desc2 = new SparkViewDescriptor() .AddTemplate("foo.spark") .SetTargetNamespace(""); Assert.That(desc1, Is.EqualTo(desc2)); }
static string RenderView(ISparkViewEngine engine, string path) { var descriptor = new SparkViewDescriptor() .AddTemplate(path); return engine .CreateInstance(descriptor) .RenderView(); }
private static void AssertDescriptorTemplates( SparkViewDescriptor descriptor, ICollection<string> searchedLocations, params string[] templates) { Assert.AreEqual(templates.Length, descriptor.Templates.Count, "Descriptor template count must match"); for (var index = 0; index != templates.Length; ++index) Assert.AreEqual(templates[index], descriptor.Templates[index]); Assert.AreEqual(0, searchedLocations.Count, "searchedLocations must be empty"); }
public override void Process(string templateName, TextWriter output, IEngineContext context, IController controller, IControllerContext controllerContext) { var descriptor = new SparkViewDescriptor(); if (controller != null) descriptor.TargetNamespace = controller.GetType().Namespace; descriptor.Templates.Add(Path.ChangeExtension(templateName, ViewFileExtension)); foreach (var layoutName in (controllerContext.LayoutNames ?? new string[0]).Reverse()) { descriptor.Templates.Add(Path.ChangeExtension(LayoutPath(layoutName), ViewFileExtension)); } if (controllerContext.ControllerDescriptor != null) { foreach (var helper in controllerContext.ControllerDescriptor.Helpers) { var typeName = helper.HelperType.FullName; var propertyName = helper.Name ?? helper.HelperType.Name; descriptor.AddAccessor( typeName + " " + propertyName, "Helper<" + typeName + ">(\"" + propertyName + "\")"); } } var entry = Engine.CreateEntry(descriptor); var view = (SparkView)entry.CreateInstance(); view.Contextualize(context, controllerContext, this, null); if (view.Logger == null || view.Logger == NullLogger.Instance) view.Logger = Logger; view.RenderView(output); // proactively dispose named content. pools spoolwriter pages. avoids finalizers. foreach (var writer in view.Content.Values) writer.Close(); view.Content.Clear(); entry.ReleaseInstance(view); }
private SparkViewDescriptor CreateDescriptor( string targetNamespace, string controllerPath, string viewName, IList<string> layouts, IEnumerable<SparkViewDescriptor.Accessor> accessors) { var descriptor = new SparkViewDescriptor { TargetNamespace = targetNamespace }; if (HasTemplate(string.Format("{0}{1}{2}.spark", controllerPath, Path.DirectorySeparatorChar, viewName))) { descriptor.Templates.Add(string.Format("{0}{1}{2}.spark", controllerPath, Path.DirectorySeparatorChar, viewName)); } else { throw new CompilerException(string.Format("Unable to find templates {0}{1}{2}.spark", controllerPath, Path.DirectorySeparatorChar, viewName)); } foreach (var layoutName in (layouts ?? new string[0]).Reverse()) { if (HasTemplate(string.Format("Layouts{0}{1}", Path.DirectorySeparatorChar, layoutName))) { descriptor.Templates.Add(Path.ChangeExtension(string.Format("Layouts{0}{1}", Path.DirectorySeparatorChar, layoutName), ViewFileExtension)); } else if (HasTemplate(string.Format("Shared{0}{1}", Path.DirectorySeparatorChar, layoutName))) { descriptor.Templates.Add(Path.ChangeExtension(string.Format("Shared{0}{1}", Path.DirectorySeparatorChar, layoutName), ViewFileExtension)); } else { throw new CompilerException(string.Format( "Unable to find templates layouts{0}{1}.spark or shared{0}{1}.spark", Path.DirectorySeparatorChar, layoutName)); } } foreach (var accessor in accessors) { descriptor.AddAccessor(accessor.Property, accessor.GetValue); } return descriptor; }
private string RenderView(SparkViewDescriptor descriptor) { _entry = _engine.CreateEntry(descriptor); var view = _entry.CreateInstance(); var contents = view.RenderView(); _engine.ReleaseInstance(view); return contents; }
public void UseMasterLooksInLayoutFolder() { _viewFolder.Add("Home\\Index.spark", "<use master=\"foo\"/><p>Hello world</p>"); _viewFolder.Add("Layouts\\foo.spark", "<h1>alpha</h1><use:view/><p>beta</p>"); var descriptor = new SparkViewDescriptor() .AddTemplate("Home\\Index.spark"); var contents = RenderView(descriptor); Assert.AreEqual("<h1>alpha</h1><p>Hello world</p><p>beta</p>", contents); }
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); }
public override ViewCompiler CreateViewCompiler(ISparkViewEngine engine, SparkViewDescriptor descriptor) { Initialize(); return base.CreateViewCompiler(engine, descriptor); }
internal SparkViewDescriptor CreateDescriptorInternal(string targetNamespace, string areaName, string controllerName, string viewName, string masterName, bool findDefaultMaster, ICollection<string> searchedLocations) { var descriptor = new SparkViewDescriptor { TargetNamespace = targetNamespace }; if (!LocatePotentialTemplate( PotentialViewLocations(areaName, controllerName, viewName), descriptor.Templates, searchedLocations)) { return null; } if (!string.IsNullOrEmpty(masterName)) { if (!LocatePotentialTemplate( PotentialMasterLocations(areaName, masterName), descriptor.Templates, searchedLocations)) { return null; } } else if (findDefaultMaster) { LocatePotentialTemplate( PotentialDefaultMasterLocations(areaName, controllerName), descriptor.Templates, null); } return descriptor; }