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