だるろぐ

明日できることは、今日しない。

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); は、あらかじめ登録したヘルパーを利用してテキストを整形する仕組みを呼び出している。これについては、また今度。まだちょっとイケてない部分がある。