public void buildPage(string relativeFile)
        {
            relativeFile = relativeFile.TrimStartingPathChars();

            var outFile = Path.Combine(this.outDir, relativeFile);

            var extension = "json";

            if (OutputExtension != null)
            {
                extension = OutputExtension;
            }
            outFile = Path.ChangeExtension(outFile, extension);

            var fileInfo = fileInfoProvider.GetFileInfo(relativeFile, null);
            TemplateEnvironment environment = new TemplateEnvironment(fileInfo.FileNoExtension, fileFinder, overrideValuesProvider.OverrideVars, null, true);
            PageStack           pageStack   = new PageStack(environment, fileFinder);

            pageStack.ContentFile = fileInfo.HtmlFile;
            if (pageStack.Visible)
            {
                pageStack.ContentTransformer = (content) =>
                {
                    //This removes all html elements and formatting and cleans up the whitespace
                    HtmlDocument htmlDoc = new HtmlDocument();
                    htmlDoc.LoadHtml(content);
                    var escaped = HtmlEntity.DeEntitize(htmlDoc.DocumentNode.InnerText);
                    escaped = escaped.SingleSpaceWhitespace();
                    return(escaped.JsonEscape());
                };
                var pageSettings = fileFinder.GetProjectPageDefinition(fileInfo);
                var layout       = pageSettings.Layout;
                if (OutputExtension != null)
                {
                    layout = Path.ChangeExtension(layout, OutputExtension);
                }
                pageStack.pushLayout(layout);

                var dr       = new PlainTextRenderer(environment, StringExtensions.JsonEscape);
                var document = dr.getDocument(pageStack.Pages);
                var outDir   = Path.GetDirectoryName(outFile);
                if (!Directory.Exists(outDir))
                {
                    Directory.CreateDirectory(outDir);
                }
                using (var writer = new StreamWriter(File.Open(outFile, FileMode.Create, FileAccess.Write, FileShare.None), Encoding.UTF8))
                {
                    writer.Write(document);
                }
            }
        }
        protected string ToPlainText(string markdown)
        {
            var writer   = new StringWriter();
            var pipeline = new MarkdownPipelineBuilder().Build();

            // We override the renderer with our own writer
            var renderer = new PlainTextRenderer(writer);

            pipeline.Setup(renderer);

            var document = Markdown.Parse(markdown, pipeline);

            renderer.Render(document);
            writer.Flush();

            return(writer.ToString());
        }
        public string Prepare(string data)
        {
            var decoded = WebUtility.HtmlDecode(data);

            return(PlainTextRenderer.RenderToPlainText(decoded).ToLower());
        }