WebMatrix:ルビを振るためのヘルパーを作ってみる

執筆日時:

f:id:daruyanagi:20140703034425p:plain

とりあえずオーソドックスに App_Code フォルダ以下に Ruby.cshtml を作ってこんな感じに記述。

# ~/Ruby.cshtml

@helper GetHtml(string text, string ruby){ <ruby><rb>@text</rb><rp>(</rp><rt>@ruby</rt><rp>)</rp></ruby> }

使い方はこんな感じ .cshtml の名前がそのまま静的クラスの名前になっていて、定義したヘルパー関数が呼べる。

# ~/Test.cshtml

@{

}

<!DOCTYPE html>

<html lang="en">
<head>
<meta charset="utf-8" />
<title></title>
</head>
<body>
@Ruby.GetHtml("柳 英俊", "やなぎ ひでとし")
</body>
</html>

f:id:daruyanagi:20140703034801p:plain

(※見やすいように拡大してある)

自分はルビのタグなんか覚えるの面倒だし、ましてやルビタグが解釈できない Firefox のことまで考えてコーディングするのは面倒なので、こういうヘルパーを作るのが好み。

ちょっとハッテン

# ~/App_Code/HtmlHelperExtensions.cs

using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.WebPages.Html;

public static class HtmlHelperExtenstion { public static IHtmlString Ruby(this HtmlHelper helper, string text, string ruby) { return new HtmlString(string.Format( "<ruby><rb>{0}</rb><rp>(</rp><rt>{1}</rt><rp>)</rp></ruby>", text, ruby )); } }

こうやって HtmlHelper の拡張メソッドとして定義しておけば

@Html.Ruby("柳 英俊", "やなぎ ひでとし")

で同様のことができるようになる。