Ruby 1.8.7 リファレンスマニュアル > ライブラリ一覧 > rdoc/parsers/parse_cライブラリ

library rdoc/parsers/parse_c

要約

C 言語で記述されたソースコードから組み込みクラス/モジュールのドキュメン トを解析するためのサブライブラリです。

C 言語で記述された拡張ライブラリなどを解析するのに使用します。 rb_define_classrb_define_method などで定義されたものに 対応する C 言語の関数のコメントを解析します。

例: Array#flatten の場合。rb_ary_flatten のコメントが解析されます。

/*
 * Returns a new array that is a one-dimensional flattening of this
 * array (recursively). That is, for every element that is an array,
 * extract its elements into the new array.
 *
 *    s = [ 1, 2, 3 ]           #=> [1, 2, 3]
 *    t = [ 4, 5, 6, [7, 8] ]   #=> [4, 5, 6, [7, 8]]
 *    a = [ s, t, 9, 10 ]       #=> [[1, 2, 3], [4, 5, 6, [7, 8]], 9, 10]
 *    a.flatten                 #=> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
 */
 static VALUE
 rb_ary_flatten(ary)
     VALUE ary;
 {
     ary = rb_obj_dup(ary);
     rb_ary_flatten_bang(ary);
     return ary;
 }

 ...

 void
 Init_Array()
 {
   ...
   rb_define_method(rb_cArray, "flatten", rb_ary_flatten, 0);

上記の例の場合、rb_ary_flatten 関数と Init_Array 関数は同じファイルに記 述されている必要があります。

また、Ruby のソースコードとは別にコメントには特別な命令を指定する事がで きます。

Document-class: name

記述する内容を name で指定した Ruby のクラスのものに指定します。同じ .c ファイルに複数のクラス定義がある場合などのように、Init_xxx 関数の xxx の部分がクラス名と同一ではない場合に使用します。

Document-method: name

記述する内容を name で指定した Ruby のメソッドのものに指定します。 RDoc が対応するメソッドを見つけられなかった場合に使用します。

call-seq:

指定した次の行から次の空行までをメソッド呼び出し列と解釈します。

また、RDoc は rb_define_method などの定義と C 言語の関数の実装が同じファ イルにある事を前提としています。そうでない場合は以下のような指定を行います。

rb_define_method(....);  // in ファイル名

例:

/*
 * Document-class:  MyClass
 *
 * Encapsulate the writing and reading of the configuration
 * file. ...
 */

/*
 * Document-method: read_value
 *
 * call-seq:
 *   cfg.read_value(key)            -> value
 *   cfg.read_value(key} { |key| }  -> value
 *
 * Return the value corresponding to +key+ from the configuration.
 * In the second form, if the key isn't found, invoke the
 * block and return its value.
 */

クラス

RDoc::C_Parser

C 言語で記述されたソースコードから組み込みクラス/モジュールのドキュメン トを解析するためのクラスです。

同時にrequireされるライブラリ

e2mmap

例外クラスに特定のエラーメッセージ用フォーマットを関連づけるためのライブラリです。

find

ディレクトリ配下のファイルを探索するためのモジュールです。

ftools

ファイル操作のためのライブラリです。

getoptlong

getoptlong は、GNU の getopt_long() とまったく同じ方式でコマンド 行オプションの解析を行う Ruby のライブラリです。

irb/notifier

ライブラリ内部で使用します。

irb/output-method

irb が出力を扱うためのサブライブラリです。

irb/slex

Ruby のソースコードを字句解析するためのサブライブラリです。 irb/ruby-lex から使用されます。

rdoc/code_objects

Ruby のソースコード中にあるクラス、モジュール、メソッドなどの構成要素を 表現するためのサブライブラリです。

rdoc/diagram

モジュールやクラスの関係を描く図を作成するためのサブライブラリです。

rdoc/dot/dot

モジュールやクラスの関係を描く図を作成するためのサブライブラリです。

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

トークンを管理するためのサブライブラリです。

singleton

Singleton パターンを扱うためのライブラリです。

time

組み込みの Time クラスを拡張します。 日時を表す文字列をパースして Time オブジェクトに変換したり、 逆に Time オブジェクトを RFC などで定められた文字列に 変換する機能を提供します。

追加・再定義されるメソッド

RDoc::KNOWN_CLASSES