雑記

2000|01|
2003|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|
2007|01|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|09|11|
2009|02|03|05|06|07|08|10|11|12|
2010|01|03|04|05|06|07|08|09|10|
2011|05|06|09|10|
2012|03|07|09|12|
2013|01|02|04|05|07|08|10|11|
2014|04|05|08|10|12|
2015|01|05|
2016|09|

2008-06-29 [長年日記]

[Ruby] <%=ul_display 0, 'hikidoc.rb 書式拡張' %>

Ruby会議に触発されて、書式拡張版 hikidoc.rbをしてみます。ここで使っているhikidoc.rbも差し替えて、今日の日記からこの拡張版書式で書いています。

(元のテストをパスするという意味で)hikidoc-0.0.2との互換性を保ちつつ、以下のような機能を追加します。

画像リンク
"[[" で始まるリンク書式のタイトルに画像ファイルを指定した場合に、<a href="URL"><img src="FILE"></a>のようなHTMLを生成する
^Jで<br>
リスト要素の途中などに強制改行を入れたいときに、(こんな感じで)^J^Jを入れると改行できる
無変換タグの指定
特定のタグを変換しない。webgenのuseERBオプションのために残してある。
スタイルシート用のclass,id属性の指定
".cls#id."という書式を使うと各要素のclass,id属性が指定可能になる。^J例:.cls#id.foo => <p class="cls" id="id">foo</p>^Jリストやテーブルでは、各要素ごとにclass,idを指定可能です。
"====" でも<hr>
webgenとの'----'の解釈の衝突を回避します

表を使ったclass属性の指定サンプル

例えばtDiaryの場合、

{{'<style type="text/css"><!--'}}
{{'table.ct { background-color: #ff9; }'}}
{{'td.cd1 { background-color: #fdd; }'}}
{{'td.cd2 { background-color: #dfd; }'}}
{{'td.cd3 { background-color: #ddf; }'}}
{{'td.cd4 { background-color: #aaa; }'}}
{{'-->'}}
{{'</style>'}}

のようにスタイルを定義した上で、

 .ct.
 .ctr1.||!.cl0.l0||!.cr1.r1||!.cr2.r2
 .ctr2.||!.cl1.l1||.cd1.1||.cd2.2
 .ctr3.||!.cl2.l2||.cd3.3||.cd4.4

といった記述をすれば、下のような結果が得られます。

.ct. .ctr1.||!.cl0.l0||!.cr1.r1||!.cr2.r2 .ctr2.||!.cl1.l1||.cd1.1||.cd2.2 .ctr3.||!.cl2.l2||.cd3.3||.cd4.4

さらに詳しい変換ルールについては、 をどうぞ。これが仕様です(^^;。

[Ruby] webgenで(拡張)hikidoc書式を使う

そもそもhikidoc.rbの書式拡張を始めたのは、webgenで使いたいと思ったのがきっかけでした。というわけで、その方法です。

webgenでhikidoc.rbを使うためにやることは簡単です。

  1. gem等でwebgenとhikidocをインストールします。
  2. をwebgenのcontentconvertersディレクトリ(/usr/local/lib/ruby/gems/1.8/gems/webgen-0.4.7/lib/webgen/plugins/contentconverters/など)にhiki.rbという名前で置きます。

以上の作業で"hikidoc"と"hikierb"の2つの書式が使えるようになります。両者の違いはhikidocエンジンで処理する前にerbで処理するかどうかという点のみです。hikidocはerb処理がない、またはwebgenのuseERBを使う場合、hikierbはerbの処理結果の出力部分にもhiki記法を使いたい場合、といった風に使い分けます。簡単な例を使って説明すると、hikierbでは、

<% 5.times do |i| -%>
<%= "* #{i}" %>
<% end -%>

* 0
* 1
* 2
* 3
* 4

のように展開されてからhikidoc.rbで処理されます。