public MarkdownTemplate AddTemplate(string templatePath, string templateContents) { var templateFile = new FileInfo(templatePath); var templateName = templateFile.FullName.WithoutExtension(); foreach (var markdownReplaceToken in MarkdownReplaceTokens) { templateContents = templateContents.Replace(markdownReplaceToken.Key, markdownReplaceToken.Value); } var template = new MarkdownTemplate(templatePath, templateName, templateContents) { LastModified = templateFile.LastWriteTime, }; PageTemplates.Add(templatePath, template); try { template.Prepare(); return(template); } catch (Exception ex) { Log.Error("AddViewPage() template.Prepare(): " + ex.Message, ex); return(null); } }
public MarkdownTemplate AddTemplate(string templatePath, string templateContents) { MarkdownTemplate template; if (MasterPageTemplates.TryGetValue(templatePath, out template)) { return(template); } var templateFile = VirtualPathProvider.GetFile(templatePath); var templateName = templateFile.Name.WithoutExtension(); template = new MarkdownTemplate(templatePath, templateName, templateContents) { LastModified = templateFile.LastModified, }; MasterPageTemplates.Add(templatePath, template); try { template.Prepare(); return(template); } catch (Exception ex) { Log.Error("AddViewPage() template.Prepare(): " + ex.Message, ex); return(null); } }
private void ReloadTemplate(MarkdownTemplate template) { var contents = File.ReadAllText(template.FilePath); foreach (var markdownReplaceToken in MarkdownReplaceTokens) { contents = contents.Replace(markdownReplaceToken.Key, markdownReplaceToken.Value); } template.Reload(contents); }
public void Can_Render_MarkdownTemplate() { var template = new MarkdownTemplate(staticTemplatePath, "default", staticTemplateContent); template.Prepare(); Assert.That(template.TextBlocks.Length, Is.EqualTo(2)); const string mockResponse = "[Replaced with Template]"; var expectedHtml = staticTemplateContent.ReplaceFirst(MarkdownFormat.TemplatePlaceHolder, mockResponse); var mockArgs = new Dictionary <string, object> { { MarkdownTemplate.BodyPlaceHolder, mockResponse } }; var templateOutput = template.RenderToString(mockArgs); Console.WriteLine("Template Output: " + templateOutput); Assert.That(templateOutput, Is.EqualTo(expectedHtml)); }
private string RenderInTemplateIfAny(MarkdownPage markdownPage, Dictionary <string, object> scopeArgs, string pageHtml) { MarkdownTemplate markdownTemplate = null; var directiveTemplatePath = markdownPage.DirectiveTemplatePath; if (directiveTemplatePath != null) { if (!PageTemplates.TryGetValue(directiveTemplatePath, out markdownTemplate)) { if (!File.Exists(directiveTemplatePath)) { throw new FileNotFoundException("Could not find template: " + directiveTemplatePath); } var templateContents = File.ReadAllText(directiveTemplatePath); markdownTemplate = AddTemplate(directiveTemplatePath, templateContents); } } if (markdownTemplate == null) { var templatePath = markdownPage.TemplatePath; if (templatePath == null) { return(pageHtml); } markdownTemplate = PageTemplates[templatePath]; } if (scopeArgs != null) { scopeArgs[MarkdownTemplate.BodyPlaceHolder] = pageHtml; } var htmlPage = markdownTemplate.RenderToString(scopeArgs); return(htmlPage); }
private string RenderInTemplateIfAny(MarkdownPage markdownPage, Dictionary <string, object> scopeArgs, string pageHtml, string templatePath = null) { MarkdownTemplate markdownTemplate = null; if (templatePath != null) { MasterPageTemplates.TryGetValue(templatePath, out markdownTemplate); } var directiveTemplate = markdownPage.DirectiveTemplate; if (markdownTemplate == null && directiveTemplate != null) { if (!MasterPageTemplates.TryGetValue(directiveTemplate, out markdownTemplate)) { var templateInSharedPath = "{0}/{1}.shtml".Fmt(SharedDir, directiveTemplate); if (!MasterPageTemplates.TryGetValue(templateInSharedPath, out markdownTemplate)) { var virtualFile = VirtualPathProvider.GetFile(directiveTemplate); if (virtualFile == null) { throw new FileNotFoundException("Could not find template: " + directiveTemplate); } var templateContents = GetPageContents(virtualFile); markdownTemplate = AddTemplate(directiveTemplate, templateContents); } } } if (markdownTemplate == null) { if (markdownPage.Template != null) { MasterPageTemplates.TryGetValue(markdownPage.Template, out markdownTemplate); } if (markdownTemplate == null && templatePath == null) { MasterPageTemplates.TryGetValue(DefaultTemplate, out markdownTemplate); } if (markdownTemplate == null) { if (templatePath == null) { return(pageHtml); } throw new Exception("No template found for page: " + markdownPage.FilePath); } } if (scopeArgs != null) { scopeArgs[MarkdownTemplate.BodyPlaceHolder] = pageHtml; } var htmlPage = markdownTemplate.RenderToString(scopeArgs); return(htmlPage); }
private IVirtualFile GetLatestPage(MarkdownTemplate markdownPage) { var file = VirtualPathProvider.GetFile(markdownPage.FilePath); return(file); }