要約
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 のソースコードとは別にコメントには特別な命令を指定する事ができます。
- 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::Parser::C | C 言語で記述されたソースコードから組み込みクラス/モジュールのドキュメントを解析するためのクラスです。 |
同時にrequireされるライブラリ
| e2mmap | (uninitialized) |
| irb/slex | (uninitialized) |
| 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/c | C 言語で記述されたソースコードから組み込みクラス/モジュールのドキュメントを解析するためのサブライブラリです。 |
| rdoc/parser/changelog | ChangeLog ファイルを解析するためのサブライブラリです。 |
| rdoc/parser/markdown | Markdown 形式で記述されたファイルを解析するためのサブライブラリです。 |
| rdoc/parser/rd | RD 形式で記述されたファイルを解析するためのサブライブラリです。 |
| 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 を定義するサブライブラリです。 |
| time | 組み込みの Time クラスを拡張します。日時を表す文字列をパースして Time オブジェクトに変換したり、逆に Time オブジェクトを RFC などで定められた文字列に変換する機能を提供します。 |