private void ParsePublicationDate(string filePath, Post post) { DateTime publicationDate = DateTime.Now; if (ViewMode == Mode.View) { string fileName = filePath.Split('\\').Last(); var datePart = fileName.Split('-').First(); publicationDate = new DateTime(int.Parse(datePart.Substring(0, 4)), int.Parse(datePart.Substring(4, 2)), int.Parse(datePart.Substring(6, 2))); } post.PublicationDate = publicationDate; }
public Post Transform(string filePath, string slug) { var post = new Post(); using (var postFileStream = File.OpenText(filePath)) { ParsePublicationDate(filePath, post); if (ViewMode == Mode.Preview) postFileStream.ReadLine(); //Publish flag is the first line of the preview file post.Title = postFileStream.ReadLine(); //Post title is the first line of the published file. postFileStream.ReadLine(); //line of "===" after the first heading. post.Body = _markdown.Transform(postFileStream.ReadToEnd()); post.Slug = slug; } return post; }
public static string RenderPost(this HtmlHelper helper, Post post) { var sb = new StringBuilder(); var sw = new StringWriter(sb); var writer = new HtmlTextWriter(sw); writer.AddAttribute(HtmlTextWriterAttribute.Class, "post"); writer.RenderBeginTag(HtmlTextWriterTag.Div); RenderTitle(post, writer); RenderDate(post, writer, helper); writer.Write(post.Body); writer.RenderEndTag(); //div.post return sb.ToString(); }
private static void RenderDate(Post post, HtmlTextWriter writer, HtmlHelper helper) { writer.AddAttribute(HtmlTextWriterAttribute.Class, "date"); writer.RenderBeginTag(HtmlTextWriterTag.Div); string displayDate = post.PublicationDate.ToString("d MMMM, yyyy"); writer.Write(helper.ActionLink(displayDate, "Load", "Post", new { year = post.PublicationDate.Year, month = post.PublicationDate.Month, day = post.PublicationDate.Day, slug = post.Slug }, new { })); writer.RenderEndTag(); //div.date }
private static void RenderTitle(Post post, HtmlTextWriter writer) { writer.RenderBeginTag(HtmlTextWriterTag.H2); writer.Write(post.Title); writer.RenderEndTag(); //h2 }