Ruby 1.9.3 リファレンスマニュアル > ライブラリ一覧 > rdoc/parser/cライブラリ
C 言語で記述されたソースコードから組み込みクラス/モジュールのドキュメン トを解析するためのサブライブラリです。
C 言語で記述された拡張ライブラリなどを解析するのに使用します。 rb_define_class や rb_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 のソースコードとは別にコメントには特別な命令を指定する事がで きます。
記述する内容を name で指定した Ruby のクラスのものに指定します。同じ .c ファイルに複数のクラス定義がある場合などのように、Init_xxx 関数の xxx の部分がクラス名と同一ではない場合に使用します。
記述する内容を name で指定した Ruby のメソッドのものに指定します。 RDoc が対応するメソッドを見つけられなかった場合に使用します。
指定した次の行から次の空行までをメソッド呼び出し列と解釈します。
また、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::Parser::C | C 言語で記述されたソースコードから組み込みクラス/モジュールのドキュメン トを解析するためのクラスです。 |
| e2mmap | 例外クラスに特定のエラーメッセージ用フォーマットを関連づけるためのライブラリです。 |
| irb/notifier | ライブラリ内部で使用します。 |
| irb/output-method | irb が出力を扱うためのサブライブラリです。 |
| irb/slex | Ruby のソースコードを字句解析するためのサブライブラリです。 irb/ruby-lex から使用されます。 |
| rdoc | RDoc は Ruby のドキュメント生成を行うためのライブラリです。rdoc という ドキュメント生成のためのコマンドも含んでいます。 |
| rdoc/alias | RDoc::Alias を定義するサブライブラリです。 |
| rdoc/anon_class | RDoc::AnonClass を定義するサブライブラリです。 |
| rdoc/any_method | RDoc::AnyMethod を定義するサブライブラリです。 |
| rdoc/attr | RDoc::Attr を定義するサブライブラリです。 |
| rdoc/class_module | RDoc::ClassModule を定義するサブライブラリです。 |
| rdoc/code_object | RDoc::CodeObject を定義するサブライブラリです。 |
| rdoc/code_objects | Ruby のソースコード中にあるクラス、モジュール、メソッドなどの構成要素を 表現するためのサブライブラリです。 |
| rdoc/constant | RDoc::Constant を定義するサブライブラリです。 |
| rdoc/context | RDoc::Context と RDoc::Context::Section を定義するサブライ ブラリです。 |
| rdoc/ghost_method | RDoc::GhostMethod を定義するサブライブラリです。 |
| rdoc/include | RDoc::Include を定義するサブライブラリです。 |
| rdoc/known_classes | Ruby の組み込みクラスに関する定数を定義するサブライブラリです。 |
| rdoc/meta_method | RDoc::MetaMethod を定義するサブライブラリです。 |
| rdoc/normal_class | RDoc::NormalClass を定義するサブライブラリです。 |
| rdoc/normal_module | RDoc::NormalModule を定義するサブライブラリです。 |
| rdoc/parser | rdoc で解析できるファイルの種類を追加するためのサブライブラリです。 |
| rdoc/parser/ruby | Ruby のソースコードを解析するためのサブライブラリです。 |
| rdoc/parser/simple | ソースコード以外のファイルを解析するためのサブライブラリです。 |
| rdoc/require | RDoc::Require を定義するサブライブラリです。 |
| rdoc/single_class | RDoc::SingleClass を定義するサブライブラリです。 |
| rdoc/stats | RDoc のステータスを管理するサブライブラリです。 |
| rdoc/token_stream | トークンを管理するためのサブライブラリです。 |
| rdoc/top_level | RDoc::TopLevel を定義するサブライブラリです。 |