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);
            }
        }
Exemple #2
0
        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);
        }
Exemple #6
0
        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);
        }
Exemple #7
0
        private IVirtualFile GetLatestPage(MarkdownTemplate markdownPage)
        {
            var file = VirtualPathProvider.GetFile(markdownPage.FilePath);

            return(file);
        }