/// <summary> /// Renders the view. /// </summary> /// <param name="viewLocationResult">A <see cref="ViewLocationResult"/> instance, containing information on how to get the view template.</param> /// <param name="model">The model to be passed into the view</param> /// <param name="renderContext"></param> /// <returns>A response</returns> public Response RenderView(ViewLocationResult viewLocationResult, dynamic model, IRenderContext renderContext) { return(new HtmlResponse { Contents = stream => { var templateName = viewLocationResult.Name; handlebars.RegisterTemplate(templateName, () => { using (var textReader = viewLocationResult.Contents()) { return textReader.ReadToEnd(); } }); foreach (var partial in viewLocator.GetAllCurrentlyDiscoveredViews().Where(x => x.Name.StartsWith("_"))) { var localPartial = partial; var partialName = localPartial.Name.TrimStart('_'); handlebars.RegisterPartial(partialName, () => { using (var textReader = localPartial.Contents()) { return textReader.ReadToEnd(); } }); } using (var writer = new StreamWriter(stream)) { dynamic output; try { output = handlebars.Transform(templateName, model); } catch (Exception) { //TODO: remove this exception handling after a few versions var templateContents = viewLocationResult.Contents().ReadToEnd(); if (templateContents.Contains("{{> _") || templateContents.Contains("{{>_")) { throw new Exception(string.Format("Template '{0}' contains and underscore prefixed partial name. This is no longer required. Search for the string '{{>_' or '{{> _' in your template and remove the '_'.", templateName)); } throw; } writer.Write(output); } } }); }
/// <summary> /// Converts the markdown. /// </summary> /// <returns> /// HTML converted from markdown /// </returns> /// <param name='viewLocationResult'> /// View location result. /// </param> public string ConvertMarkdown(ViewLocationResult viewLocationResult) { string content = viewLocationResult.Contents().ReadToEnd(); if (content.StartsWith("<!DOCTYPE html>")) { return MarkdownViewengineRender.RenderMasterPage(content); } var parser = new Markdown(); var html = parser.Transform(content); return ParagraphSubstitution.Replace(html, "$1"); }
/// <summary> /// Renders the view. /// </summary> /// <param name="viewLocationResult">A <see cref="ViewLocationResult"/> instance, containing information on how to get the view template.</param> /// <param name="model">The model to be passed into the view</param> /// <param name="renderContext"></param> /// <returns>A response</returns> public Response RenderView(ViewLocationResult viewLocationResult, dynamic model, IRenderContext renderContext) { return new HtmlResponse { Contents = stream => { var templateName = viewLocationResult.Name; var handlebars = threadLocalHandlebars.Value; handlebars.RegisterTemplate(templateName, () => { using (var textReader = viewLocationResult.Contents()) { return textReader.ReadToEnd(); } }); foreach (var partial in viewLocator.GetAllCurrentlyDiscoveredViews().Where(x => x.Name.StartsWith("_"))) { var partialName = partial.Name.TrimStart('_'); handlebars.RegisterPartial(partialName, () => { using (var textReader = partial.Contents()) { return textReader.ReadToEnd(); } }); } using (var writer = new StreamWriter(stream)) { dynamic output; try { output = handlebars.Transform(templateName, model); } catch (Exception) { //TODO: remove this exception handling after a few versions var templateContents = viewLocationResult.Contents().ReadToEnd(); if (templateContents.Contains("{{> _") || templateContents.Contains("{{>_")) { throw new Exception(string.Format("Template '{0}' contains and underscore prefixed partial name. This is no longer required. Search for the string '{{>_' or '{{> _' in your template and remove the '_'.", templateName)); } throw; } writer.Write(output); } } }; }
/// <summary> /// Converts the markdown. /// </summary> /// <returns> /// HTML converted from markdown /// </returns> /// <param name='viewLocationResult'> /// View location result. /// </param> public string ConvertMarkdown(ViewLocationResult viewLocationResult) { string content = viewLocationResult.Contents().ReadToEnd(); if (content.StartsWith("<!DOCTYPE html>")) { return(MarkdownViewengineRender.RenderMasterPage(content)); } var parser = new Markdown(); var html = parser.Transform(content); return(ParagraphSubstitution.Replace(html, "$1")); }
public string ConvertMarkdown(ViewLocationResult viewLocationResult) { var content = viewLocationResult.Contents().ReadToEnd(); // Parse out the post settings var startOfSettingsIndex = content.IndexOf("---", StringComparison.InvariantCultureIgnoreCase); if (startOfSettingsIndex >= 0) { var endOfSettingsIndex = content.IndexOf( "---", startOfSettingsIndex + 3, StringComparison.InvariantCultureIgnoreCase); endOfSettingsIndex += 3; content = content.Substring(endOfSettingsIndex, content.Length - endOfSettingsIndex); } return(new Markdown().Transform(content)); }