private MarkdownPage ParsePage(string fileName)
{
string html = CommonMark.CommonMarkConverter.Convert(File.ReadAllText(fileName));
HtmlTree tree = new HtmlTree(new TextStream(html));
tree.Build();
ElementNode firstChild = tree.RootNode.Children[0];
ElementNode prop = firstChild.Children[0];
MarkdownPage page = new MarkdownPage();
page.Title = AttrValue(prop, "pageTitle", Path.GetFileNameWithoutExtension(fileName));
page.Description = AttrValue(prop, "description", page.Title);
page.Content = html.Substring(firstChild.End, tree.RootNode.Length - firstChild.End).Trim();
page.Keywords = AttrValue(prop, "keywords", page.Title);
page.Slug = AttrValue(prop, "slug", page.Title.ToLowerInvariant());
page.DateModified = File.GetLastWriteTime(fileName);
page.FileName = fileName.Replace(BaseDirectory, string.Empty).Replace("\\", "/");
page.ShowInMenu = Path.GetFileName(fileName).StartsWith("_") ? false : true;
if (prop.GetAttribute("order") != null)
page.Order = int.Parse(prop.GetAttribute("order").Value);
else
page.Order = 1000 + page.Title[0];
return page;
}