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); } }
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; } } }