[トップ] [更新履歴] [著書] [コンピュータ] [ゲーム] [CGI配布]


Title: rweave.rb

Index


RDによる文芸的プログラミングを支援するツール。

1 概要

文芸的プログラミング。 これは、プログラムと同じファイルにドキュメントを書くことで常に整合性の取れたプログラムとドキュメントを作成する手法。 同じファイル、それもプログラムの該当部分に近いところにドキュメントを記述するために、プログラムと同時にドキュメントも手軽に修正することが可能。

増井さんのアプローチでは一つのHTMLにプログラムとドキュメントを書いているが、ここではRDを使うことにする。 もともとRDはRubyスクリプトに埋め込むために作られたので、RubyスクリプトにRDを埋め込むだけでも文芸的プログラミングと言うこともできるが、ここではもう一つ踏み込んだアプローチを取る。

HTMLにプログラムとドキュメントを書く場合は「プログラムを含んだドキュメント」である。 対してRubyスクリプトにRDを埋め込む場合は「ドキュメントを含んだプログラム」となる。 前者の場合、ドキュメントそのものをウェブにアップでき、かつ一つのファイルからすべてのソースファイルを取り出すことができるという利点がある反面、プログラムを書き換えるときはそのプログラムを含んだHTMLを書き換えないといけないので、書き換えるたびにHTMLからプログラムを取り出す手間がある。 後者の場合はそのまま実行できるが、ソースが複数ある場合ドキュメントを完成させるためには複数のソースファイルが必要になってしまう。 ただ、Rubyのようなインタプリタ言語の場合はすぐに実行できた方が嬉しいし、せっかくRDという書きやすいドキュメント体系があるのだから俺はこっちを選択する。 それにソースファイルが一個の小さなプログラムの場合はその欠点はなくなる。

ドキュメントソースすなわちプログラムのファイルが複数ある場合、ドキュメントを結合する順序に気を配らないといけないが、結合する順序をテンプレートに記述すればよい。

2 インストール

すみません、いろんなツールに依存してます(^^;;

2.1 必要なもの

2.2 あればいいもの

2.3 インストール方法

  1. GNU make。

  2. sendcmd.rbを LOAD_PATH の通ったディレクトリに置く。

3 使い方

3.1 基本的な使い方

使い方は次の2ステップになる。

  1. 出力するRDのテンプレートを生成する。 これは最初の一回だけやればよい。

  2. HTMLを生成する。

3.2 テンプレート

テンプレートはeRuby RDとなっている。

いじるとすれば「#### config」部分の $src_files 変数くらいだろう。 その変数はRD(が含まれたファイル)を結合する順にファイルを並べている配列である。 そこをいじることでRDを結合する順番を変更することができるし、新たにRDを加えることもできる。

「#### rd_part」以下はHTMLをどのように出力するかを書いている。

3.3 カスタマイズ

setupメソッドに記述してある変数は ~/.rweave に書くことで好きなように設定できる。 HTML出力形式を変えたり、Makefileをいじったりするときには ~/.rweave に書けばいい。 見ての通り、setupメソッドの最後に ~/.rweave が読み込まれる。

4 サブコマンド

rb2rd

スクリプトからRD部分を切り出して結合する。

rb2rb

スクリプトからRubyスクリプトのみを抜き出す。

template
init

テンプレート(eRuby RD)を出力する。

make
makerd

スクリプトよりRDとHTMLを生成する

clean

テンプレート以外の生成したファイルをすべて削除する。

realclean

テンプレートも含め生成したファイルをすべて削除する。

default(引数なしで起動したとき)

5 既知のバグ

6 ソースコード

7 実行結果

cd /home/takashi/src/rweave/
/home/takashi/src/rweave/rweave.rb 
created rweave.mak.
make -k -f rweave.mak rdpart
ruby /home/takashi/src/rweave/rweave.rb rb2rd rweave.rb > rweave.rb.rdw
make -k -f rweave.mak
rd2  -r rd/rd2html-lib.rb --with-part=html:include --out-code=jis index.rd > index.html || rm -f index.html

Interpretation finished at Wed Oct 17 09:17:23

戻る ホームページへ戻る

Valid XHTML 1.0!
rubikitch(rubikitch@ruby-lang.org)

投書箱:コメントや伝えたい情報などがあればお気軽にどうぞ
名前 メール [説明]
URL
本文


*1Cygwinのmakeはいずこに?