[トップ] [更新履歴] [著書] [コンピュータ] [ゲーム] [CGI配布] [宣伝] [掲示板・チャット]
ひょんなことから表を手軽に書きたいなと思い、Rubyで作表ツールを作成中。 その名もRT!! あのRDを連想させる名前にしたのもとにかくワケアリである。 RDの売りである可読性とさまざまなフォーマットに変換可能を継承し、 RDtoolの実験的機能ではあるがfilter機能によりRDと融合させることが可能である。 いってみれば兄弟みたいなものである。
とりあえず、HTMLな表に変換することと、w3mを通すことで表の整形までは成功。 近いうちにでもLaTeXの表にも変換させる予定。
設計の方もRDtoolのパクリである(笑)。 parserとvisitorに分け、rt2html-lib.rbを作成。
現時点でのスナップショットをここで拾うことができる。
また、RTコンバータCGIもあるので使ってみて。
パッケージにある rt ディレクトリを $LOAD_PATH の通ったディレクトリにコピーする。
require 'rt/rtparse'
と使われるので。rt/dot.rt.rd2rc
RTは3つのBlockで構成される
「属性 = 値」の組からなる。 以下の例では caption 属性を設定し、表題をつけている。 このBlockは省略できる。
HTMLでいうTHEADの部分。 表のヘッダを設定する。 ヘッダは中央揃えになる。 このBlockも省略できる。
HTMLでいうTBODYの部分。 データを記述する。 数字は右揃え、それ以外は左揃えになる。
HeaderBlock, BodyBlock の項目の区切は , である。
==は左の列を伸ばす。 HTMLでいうTH、TD要素のcolspan属性に影響。
||は上の行を伸ばす。 HTMLでいうTH、TD要素のrowspan属性に影響。
Code: easiest.rt 1, 2, 3 4, 5, 6 7, 8, 9
これで
$ rt2 easiest.rt
を実行すると、以下の表ができる。 簡単でしょ?
┌─┬─┬─┐ │1 │ 2│ 3│ ├─┼─┼─┤ │4 │ 5│ 6│ ├─┼─┼─┤ │7 │ 8│ 9│ └─┴─┴─┘
これを流し込み、
$ rt2 test.rt
を実行すると、
----------ここから (test.rt) caption = 表テスト , 人間, == , 犬 , == || , 男 , 女 ,オス,メス x , 1.0 , 2.0, 1.1, 1.2 y , 0.4 , 0.5, 0.3, 0.1 ----------ここまで 整形結果はこんな感じになる。ちなみに数字データは適当に入れただけである。 テスト表 ┌─┬─────┬─────┐ │ │ 人間 │ 犬 │ │ ├──┬──┼──┬──┤ │ │ 男 │ 女 │オス│メス│ ├─┼──┼──┼──┼──┤ │x │ 1.0│ 2.0│ 1.1│ 1.2│ ├─┼──┼──┼──┼──┤ │y │ 0.4│ 0.5│ 0.3│ 0.1│ └─┴──┴──┴──┴──┘
さらに、RDに埋め込むこともできるのだ。 RTはRDではないのでRDのfilter機能を使うことになる。 たとえば、これを流し込み、以下のコマンドで整形すると、
$ rd2 --with-part='RT:rt' rttest.rd|w3m -dump -T text/html ----------ここから (rttest.rd) =begin = RDとRTは兄弟だ これは表を含んだRDだよ。 まあ厳密にいえばRD/RTでしょうか。 =end =begin RT caption = 表テスト , 人間, == , 犬 , == || , 男 , 女 ,オス,メス x , 1.0 , 2.0, 1.1, 1.2 y , 0.4 , 0.5, 0.3, 0.1 =end =begin どう?うまくいったかな。 =end ----------ここまで
こんな表つきのテキストを生成する。 HTMLを生成し、整形はw3mで行った。
----------ここから RDとRTは兄弟だ これは表を含んだRDだよ。まあ厳密にいえばRD/RTでしょうか。 表テスト ┌─┬─────┬─────┐ │ │ 人間 │ 犬 │ │ ├──┬──┼──┬──┤ │ │ 男 │ 女 │オス│メス│ ├─┼──┼──┼──┼──┤ │x │ 1.0│ 2.0│ 1.1│ 1.2│ ├─┼──┼──┼──┼──┤ │y │ 0.4│ 0.5│ 0.3│ 0.1│ └─┴──┴──┴──┴──┘ どう?うまくいったかな。 ----------ここまで
HTMLやLaTeXの表の書き方がちょいイラつく。
RDに表作成機能があればいいが、いろいろ弊害が。
下へいくほど優先度が落ちる。
簡単な計算機能。 →eRuby RTで解決
rt2html-lib.rbにおいてタグを小文字に変更。これでXHTMLでも大丈夫。 というか気付いてなくてすみません。
あおきさんのsetup.rbを使用。 それに伴い、パッケージ構成を変更。
rt2html-lib.rb: captionが指定してないときはCAPTION要素をつけないように。
空白セルの処理でのバグを対処。
符号つきの数字でも右揃えにするようにした。