Calendar Helper Plugin をいじる
昨日の日記でRailsで使えそうなカレンダープラグインを列挙しました。それぞれのドキュメントを読んだりした感じから、一番シンプルで拡張しやすそうだという理由から、Calendar Helper Plugin を使うことにしました。
Calendar Helper Plugin のおさらい
概要
昨日は眠かったのであまり上手くまとめられていなかったので、もう一度簡単にまとめてみます。
Calendar Helper Plugin は、Jeremy Voorhis さんが作って、Jarkko Laine さんが拡張したプラグインです。TABLEタグで作られたシンプルなカレンダーを作成してくれます。
特徴
Calendar Helper Plugin は、ビューに対応するrhtmlファイルの挿入したい箇所にコードを挿入すると、そこに生成されたHTMLが埋め込まれます。基本的な使い方は以下のような感じです。
app/views/hoge.rhtml <%= calendar(:year => 2007, :month => 6) %>
calendar は、呼出し時に少なくともオプションとして、表示する年(;year)と月(:month)を指定する必要があります。他にも色々なオプションがありますが、詳しくはドキュメントを読んでみてください。
Plugin の拡張
というわけで、対応していないなら対応させてしまえということに。まず、どんな出力をサポートするかを考えます。とりあえず、月 => 1月、曜日 => 日といった一般的な日本語はサポートしましょう。これだけだとつまらないので、月に陰暦も使えるようにしてみます。(睦月とか卯月ってやつです)
オプションで渡してしまえ
さて、インタフェースを変えずに日本語サポートするにはどうしたらいいかと考えた結果、オプションに月や曜日のフォーマットを指定するようにすればいいことにしました。オプションはとりあえず以下のような名前にしました。
- 月の表示に関するオプションは :month_expression
- 曜日の表示に関するオプションは :week_expression
英語がアレなのでまずかったら言ってください。これに識別子を与えてやります。月の表示方法には以下の2つの識別子をあげましょう。
- 通常の月(1月、2月)は 'jp_normal'
- 陰暦(睦月、卯月)は 'jp_lunar'
これもアレだったら読み替えてください。
曜日は今のところ日、月、火の簡略方式のみにしましょう。長すぎるとカレンダーがコンパクトになりませんしね。
- 曜日を日本語にする場合は 'jp'
これを使った呼び出し例はこんな感じになります。
月を陰暦で、曜日を日本語で表示する <%= calendar({:year => 2007, :month => 6, :month_expression => 'jp_lunar', :week_expression => 'jp'}) %>
これで一応インタフェース部分は終了です。
コード修正は長くなりそうなのでまた明日。