Exemple #1
0
 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;
 }
Exemple #2
0
 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;
 }
Exemple #3
0
        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();
        }
Exemple #4
0
 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
 }
Exemple #5
0
 private static void RenderTitle(Post post, HtmlTextWriter writer)
 {
     writer.RenderBeginTag(HtmlTextWriterTag.H2);
     writer.Write(post.Title);
     writer.RenderEndTag(); //h2
 }