Ruby 1.8.7 リファレンスマニュアル > ライブラリ一覧 > rdocライブラリ
RDoc は Ruby のドキュメント生成を行うためのライブラリです。rdoc という ドキュメント生成のためのコマンドも含んでいます。
このパッケージは RDoc と SimpleMarkup というふたつのコンポーネントを含 んでいます。 RDoc とは Ruby のソースファイルに対するドキュメントを生成 するアプリケーションです。 JavaDoc と同様に、ソースを解析し、クラス、モ ジュール、メソッドの定義を抜き出してきます(include,require もです)。そ してこれらの内容とその直前に書かれたコメントを併合し、ドキュメントを出 力します(現在は HTML しか出力できませんが、この部分は取り替え可能にでき ています)。Markup とはプレーンテキストを様々なフォーマットに変換するた めのライブラリです。RDoc によってメソッドやクラスに関するドキュメントを 生成するとき、コメント部を変換するために使われます。
インストールすれば、'rdoc' コマンドでドキュメントが生成できます。 (Windows では 'rdoc.bat' です)
$ rdoc [options] [names...]
"rdoc --help" と打てば、最新のオプションに関する情報が得られます。
$ rdoc
このコマンドでカレントディレクトリ以下にあるすべての Ruby とCのソースか らドキュメントを生成します。生成したドキュメントはカレントディレクトリ 直下の 'doc' というディレクトリに置かれます。
ドキュメントを読む人に取って便利なように、生成されるドキュメントのイン デックスページに中心的なファイに書かれている内容を含めることができます。 例えば、Rdoc そのもののドキュメントを生成する場合は、以下のようにタイプ します。
$ rdoc --main rdoc/rdoc.rb
RDoc が生成するドキュメントのコメント部で使える様々なマークアップの方法 は以下の Markup の項に書かれています。
RDocは拡張子によってファイルをどう処理すべきかを決めます。ファイル名の 末尾が .rb や .rbw であるファイルは Ruby のソースファイルとして処理され ます。末尾が .c であるファイルはCのソースとして処理されます。それ以外の ファイルは単なる SimpleMarkup-style で記述されたファイルとして処理され ます(行の先頭に「#」というコメント記号があってもなくても同じように処理 されます)。また、RDoc にディレクトリ名が渡されると、その中のディレクト リを再帰的に走査します。ただしこの場合 Ruby と C のソースファイルのみが 処理されます。
RDoc はコマンドラインから以下のようにして起動します。
$ rdoc <options> [name...]
ファイルをパースし、そこに含まれている情報を集め、出力します。こうして 全ファイルに渡るクロスリファレンスが生成できます。 もし name がディレク トリならば、その中を走査します。 name を指定しなければ、カレントディレ クトリ(とそのサブディレクトリ内)の全ての Ruby のファイルを処理します。
options は以下が指定できます。
name で指定したメソッドを attr_xxx と同様なものとして取り扱います。例え ば "--accessor db_opt" とすると、以下のような行も RDoc によって処理さ れドキュメントに含まれるようになります。
db_opt :name, :age
それぞれの name には "=flagtext" というオプションを付けることができま す。例えば、"=rw" とすると attr_accessor と同じように取り扱われます。
プロテクティッドメソッドやプライベートメソッドも出力に含まれるように なります(デフォルトではパブリックメソッドのみです)。
生成する HTML の charset を指定します。
実行時に内部情報を出力します。
モジュールやクラスを表示するのに図を使うようになります。この機能は実 験的なもので、すべての出力テンプレートに対応しているわけではありません。 dot V1.8.6 かそれ以降がなければ "--diagram" オプションは正しい出力が できません(www.research.att.com/sw/tools/graphviz/)。
pattern にマッチするディレクトリおよびファイルを処理の対象から取り除きます。
ファイル名の末尾が .new であるものを、末尾が .old であるものとして取 り扱います。例えば '--extension cgi=rb' とすれば、RDoc は ".cgi" で 終わるファイルを Ruby のソースとして取り扱います。
--diagram を指定した場合生成された図において、クラスがどのソースファ イルで定義されているかを四角で囲うことで示します。複数のファイルで定 義されているクラスは複数の四角にまたがった図が作られます。--diagram といっしょに使わなければ意味のないオプションです。(実験的な機能です)
出力済みのファイルの方が新しい場合でも全てのファイルを更新します。 1.9.2 以下では指定しなかった場合は有効になりません。1.9.2 以降は指定 しなかった場合でも有効になります。
生成される出力を指定します。
使いかたの概要を表示します。
出力に関するオプションを解説します。
図のフォーマットを指定します。png、gif、jpeg、jpg が指定できます。指 定しなかった場合は png が使われます。--diagram が必要です。
:include: 命令でファイルを探すディレクトリを指定します。 --include を 複数使ってもかまいません。これを指定しなくとも処理中のファイルはすべ て探索されます。
デフォルトでは、メソッドのソースコードはポップアップウィンドウで表示 されます。このオプションを付けると、インラインで表示されます。
ソースコードに行番号を付けます。
最初に表示されるページに置かれるもの(クラス、ファイルなど)を指定しま す。もし、特定のファイル(例えば、README など)を置きたければ、それをコ マンドラインの最初に置くだけでもかまいません。
ri の出力を生成するとき、出力ディレクトリにすでにファイルが存在すれば、 そのファイルを上書きせずに、マージするようにします。
すべての出力を一つのファイルに書きだします。
出力先のディレクトリを dir に設定します(デフォルトは "doc" です)。
出力の名前をnameにします(HTML を出力する場合には何の効果もありません)
クラスやファイルが複数のファイルで定義されていて、ナビゲーションペイ ンのファイルの所をクリックした場合、そのモジュール内のクラスなどは通 常はそのファイルで定義されている分しか表示されません。このオプション を指定すると、そのファイルで定義されているかどうかにかかわらず、すべ てのモジュール(クラス)内モジュール(クラス)を表示します。
処理進行メッセージを表示しません。
ri で読める出力を生成します。デフォルトでは --ri を指定すると ~/.rdoc に出力されますが、--ri-site で $datadir/ri/<ver>/site に、--ri-system で $datadir/ri/<ver>/system に出力されます。これれす べてはうしろに指定した --op を上書きします。デフォルトのディレクトリ は ri のデフォルトのサーチパスです。
コメント内の name というところからインスタンスメソッドへのハイパーリ ンクを生成します。このオプションを指定しなければ '#' は取り除かれま す。
(RDoc のではなく)外部スタイルシートの URL を指定する。
タブの幅を指定する(デフォルトは 8)。
出力生成時に使うテンプレートを指定する(デフォルトは 'html')。実際には これで $: の中のディレクトリの rdoc/generator/xxxx が 使われる。 (xxxx はフォーマッタによって異なる)。
出力のタイトルを text に指定します。
RDocのバージョンを表示する。
CVS のウェブフロントエンドへのリンクの URL を指定する。URL が '\%s' を含んでいれば、そこがファイル名が置きかえられます。'\%s' を含んで いなければ、ファイル名を指定した URL の後に付けたものを使います。
コメント部はかなり自然に書くことができます。'#' で始まるコメントも使え ますし、=begin/=end でのコメントも使えます。=begin/=end を使う場合は、 以下のように =begin の行に 'rdoc' タグを付ける必要があります。
=begin rdoc Documentation to be processed by RDoc. =end
パラグラフは左のインデントを揃えたテキストのかたまりで構成されます。そ れよりも深くインデントされたテキストはそのまま、マークアップを考慮せず にフォーマットされます。
また、RDocは '#--' を含む行が現われると処理をしなくなります。これで外部 向けコメントと内部向けコメントを分離したり、メソッド、クラスモジュール と関係ないコメントを取り除いたりできます。'#++' で始まる行が現われると、 処理を再開します。
# Extract the age and calculate the # date-of-birth. #-- # FIXME: fails if the birthday falls on # February 29th #++ # The DOB is returned as a Time object. def get_dob(person) ...
リストは以下のような記号が付いたパラグラフです。
例えば、上のパラグラフは以下のように書きます。
リストは以下のような記号が付いた パラグラフです。 * '*' もしくは '-' で普通のリスト * 数字+ピリオドで番号付きリスト * アルファベット+ピリオドで アルファベットリスト
ラベル付きリスト(description list とも呼ばれる)は通常大括弧でラベルを囲 います。
[cat] small domestic animal [+cat+] command to copy standard input
ラベル付きリストはコロン2つをラベルの後に置くことでもマークアップできる。 この場合は表形式となり、記述部(コロン2つの後のテキスト)は左揃えになりま す。この形式は本ドキュメントの末尾のほうの 'author' のところで使われて います。
cat:: small domestic animal +cat+:: command to copy standard input
どちらの形式のラベル付きリストでも、ラベルと同じ行から記述部を書き始め た場合は、その記述部と同じインデントでひとかたまりとなります。また、ラ ベルの次の行から記述部を書き始めることもできます。ラベル部の文章が長く なるならこうしたほうが良いかもしれません。つまり以下の例のどちらでも良 いということです。
<tt>--output</tt> <i>name [, name]</i>:: specify the name of one or more output files. If multiple files are present, the first is used as the index. <tt>--quiet:</tt>:: do not output the names, sizes, byte counts, index areas, or bit ratios of units as they are processed.
見出し部は ASCII 文字の等号「=」を使います。
= 見出しレベル1 == 見出しレベル2
以下レベル 3、4、…と続きます。
罫線(横方向の線)はASCII文字のハイフン三つ '---' を使います。
文中で以下のようなマークアップもできます。
それぞれ2つ形式がありますが、word の方は単語を囲うことしかできません。 単語というのは、アルファベットの大文字および小文字とアンダースコアーの みから構成された文字列です(よって日本語では使えません)。また、これらの マークアップ記号の前に「\」という文字を置くと、マークアップが抑制されま す。上の表は以下のようにすれば作れます。
<em>イタリック体</em> _italic_:: \_word_ もしくは \<em>text</em> <b>ボールド体</b> *bold*:: \*word* もしくは \<b>text</b> <tt>タイプライター体</tt> +typewriter+:: \+word+ もしくは \<tt>text</tt>
コメント内のクラス名やソースファイルの名前やメソッド名(アンダースコアー を含んでも良いし「#」が前に付いていても良い)は、自動的にリンクが張られ ます。
http:、 mailto:、 ftp:、 www. で始まるテキストはウェブへのリンクだと判 別されます。外部の画像ファイルを参照している場合は <IMG..> に変換されま す。link: で始まる場合はローカルファイルへのリンクであるとみなし、--op で指定したディレクトリからの相対パスとなります。
label[url] の形式でもハイパーリンクが張れます。この場合は label が表示 され、url がリンク先となります。label が複数の単語を含んでいる場合(日本 語の場合はこっちを使ってください)、
中括弧を使い、<em>{multi word label}[</em>url<em>]</em> としてください。
メソッドのパラメータは抜きだされ、ドキュメントのメソッド記述のところに 出力されます。メソッドが yield を呼んでいる場合は、yield に渡されている パラメータもそこに出力されます。
def fred ... yield line, address
上のようなメソッド定義に対して、以下の出力が得られます。
fred() { |line, address| ... }
メソッド名の直後に ':yields: …' を含むコメントを書くと、この出力を上書 きできます。
def fred # :yields: index, position ... yield line, address
上のようにするとお、以下の出力になります。
fred() { |index, position| ... }
マークアップは <tt> タグ内部などでバックスラッシュ記号でエスケープでき ます。バックスラッシュ自身を表示する場合は 2 回連続でバックスラッシュを 記述します。また、<tt> タグの内側では後ろに続くマークアップ記号 (<tt><*_+</tt>)やバックスラッシュ、リンク記法は削除されます。
例:
\{ruby-lang.org}[www.ruby-lang.org] は以下のように変換されます。
{ruby-lang.org}[www.ruby-lang.org]
\RDoc::RDoc#document は以下のように変換されます。
RDoc::RDoc#document
<tt>\S</tt> は以下のように変換されます。
<tt>S</tt>
コメント部には他にも以下の命令を含めることができます。
':yield:' はドキュメント修飾子の一例です。以下の修飾子は修飾しようとし ている部分の直後に書きます。ほかにも以下のようなものがあります。
指定した要素をドキュメントに含めません。クラスやモジュールを指定した場 合、それに直接含まれるメソッドやエイリアスや定数や属性も省略されます。 しかし、デフォルトでは、指定したモジュールやクラスに含まれるモジュール やクラスはドキュメントに 含まれます。これをオフにしたい場合は all 修飾 子を加えます。
module SM #:nodoc: class Input end end module Markup #:nodoc: all class Output end end
以上のコードでは、SM::Input のドキュメントのみが出力されます。
ドキュメント要素(クラス、メソッドなど)をドキュメントに含めるかどうか を制御します。例えば、あるクラスにドキュメントに出力したくない定数があ るとすると、その前に :stopdoc: を置き、後ろに :startdoc: を置きましょう。 もし :startdoc: を置かなければ、そのクラス、モジュール全体がドキュメ ントに出力されなくなり ます。
指定したメソッドや属性を強制的にドキュメントに含めます。これは例えば特 定のプライベートメソッドをドキュメントに含めたい場合に便利です。
以降の内容を一切ドキュメントに出力しません。
これはインスタンスメソッドの initialize にのみ適用できます。通常、 RDoc は initialize メソッドのドキュメントやパラメータを実際にはクラス メソッド new のものと仮定し、initialize の代わりに new を出力しま す。:notnew: 修飾子はこれを止めさせます。initialize メソッドは protected なので、コマンドラインで -a を指定するなどしない限り、 initialize メソッドに関するドキュメントは出力されないことに注意してくだ さい。
指定した場所に指定したファイルを挿入します。ファイルを探すディレクト リは --include で指定したものとカレントディレクトリです。挿入されるファ イルは :include: 命令を置いたのと同じだけインデントされます。
ドキュメントのタイトルを指定します。コマンドラインの --title パラメー タと同じ働きをします。(コマンドラインでの指定のほうが優先されます)
コマンドラインの --main パラメータと同じ働きをします。
新しいセクションを開始します。:section: の後ろに置いたタイトルはその セクションの見出しとなります。そして、コメントの残りの部分はそのセク ションの導入文となります。その後ろのメソッド、エイリアス、属性、クラス はこのセクションに含まれます。:section: 命令の前に何行かあってもかま いません。それらはドキュメントには含まれず、またそれとまったく同じ内容 の行がブロックの終端にあった場合、それも取り除かれます。そのため、以下 のような装飾をすることが できます。
# ---------------------------------------- # :section: My Section # This is the section that I wrote. # See it glisten in the noon-day sun. # ----------------------------------------
デフォルトではメソッドの引数や yield の引数をパースして出力しますが、 これを指定した次の行から次の空行までをメソッド呼び出し列と解釈し、出 力をそこに書かれたように変更します。
また、他にもRuby から使用するために書かれた C 言語のソースコードのみで 指定できる命令があります。それらについては rdoc/parsers/parse_c を参照してください。
rdoc/code_objects | Ruby のソースコード中にあるクラス、モジュール、メソッドなどの構成要素を 表現するためのサブライブラリです。 |
rdoc/diagram | モジュールやクラスの関係を描く図を作成するためのサブライブラリです。 |
rdoc/dot/dot | モジュールやクラスの関係を描く図を作成するためのサブライブラリです。 |
rdoc/markup/simple_markup | RDoc 形式に整形されたプレインテキストを変換するためのサブライブラリです。 |
rdoc/markup/simple_markup/to_flow | RDoc 形式のドキュメントを表示する一段階前の構造化された状態にするための サブライブラリです。 |
rdoc/markup/simple_markup/to_html | RDoc 形式のドキュメントを HTML に整形するためのサブライブラリです。 |
rdoc/markup/simple_markup/to_latex | RDoc 形式のドキュメントを LaTeX に整形するためのサブライブラリです。 |
rdoc/options | rdoc コマンドのオプションを解析するためのサブライブラリです。 |
rdoc/parsers/parserfactory | rdoc で解析できるファイルの種類を追加するためのサブライブラリです。 |
rdoc/parsers/parse_c | C 言語で記述されたソースコードから組み込みクラス/モジュールのドキュメン トを解析するためのサブライブラリです。 |
rdoc/parsers/parse_f95 | Fortran95 のソースコードを解析するためのサブライブラリです。 |
rdoc/parsers/parse_rb | Ruby のソースコードを解析するためのサブライブラリです。 |
rdoc/parsers/parse_simple | ソースコード以外のファイルを解析するためのサブライブラリです。 |
rdoc/rdoc | rdoc コマンドのためのライブラリです。 |
rdoc/tokenstream | トークンを管理するためのサブライブラリです。 |
rdoc/usage | プログラムの使い方(RDoc.usage を呼び出したソースファイルの先頭に記述さ れたコメント)を表示するためのサブライブラリです。 |