WebMatrix + Markdown ...... リファクタリング。
WebMatrix + Markdown で手軽に更新できる(?)Webサイトを作る のコードをリファクタリングしてみた。ついでに、
- .md/.markdown という拡張子だったらプレーンテキストを表示する機能
- フォルダ階層への対応
の2機能を追加した。
@using System.IO @functions { string ReadTextFile(string path) { path = string.Format("/Pages/{0}.txt", path); path = Server.MapPath(path); if (!File.Exists(path)) { throw new HttpException(404, path + "is not found."); } return File.ReadAllText(path); } } @{ var url = UrlData.Count > 0 ? string.Join("/", UrlData) : "Home"; url = url.TrimEnd('/'); var extension = Path.GetExtension(url); var content = string.Empty; switch (extension) { case ".markdown": case ".md": // Remove extension url = url.Replace(extension, ""); content = ReadTextFile(url); Response.ContentType = "text/plain"; Response.Write(content); return; default: // Prepare Layout Layout = "_SiteLayout.cshtml"; Page.Title = url; // Process by Markdown Deep var markdown = new MarkdownDeep.Markdown() { ExtraMode = true, }; content = ReadTextFile(url); content = markdown.Transform(content); // content = Daruboard.Transform(content); break; } } @Html.Raw(content)
Daruboard.Transform(content);
は、あらかじめ登録したヘルパーを利用してテキストを整形する仕組みを呼び出している。これについては、また今度。まだちょっとイケてない部分がある。