3

すべて、rdoc を使用して、C 拡張を含む Ruby コードのドキュメントを生成していますが、メソッドの引数に問題があります。Rdoc はそれらの名前を正しく解析せず、代わりに p1、p2 などを使用します。

まず、拡張機能は実際には C++ としてコンパイルされるため、次のような関数定義を使用する必要があります。

static VALUE 
MyMethod(VALUE self, VALUE flazm, VALUE saszm)
{
    return Qnil;
}

rdoc は、次のような古いスタイルの「C」定義を想定しているようです。

static VALUE
MyMethod(self, flazm, saszm)
    VALUE self;
    VALUE flazm;
    VALUE saszm;
{
    return Qnil;
}

とにかく私はこれを機能させることができますか?

4

1 に答える 1

3

RDoc は、C 拡張* の引数名についてまったく無知です。これは、RDoc が引数の文字列をコンパイルする方法です。

meth_obj.params = "(" + (1..p_count).map{|i| "p#{i}"}.join(", ") + ")"

ソースの書式を変更しても役に立ちません。

call-seqドキュメントを改善するには、ディレクティブを使用できます。デフォルトのものの代わりに使用されるメソッドを呼び出す方法を 1 つ以上指定できますmethod(p1, p2)

/*
 * call-seq:
 *   my_method(flazm, saszm) -> nil
 *   my_method(bunny) { |fluffy_ears| ... } -> true or false
 *
 * Method description here.
 */
static VALUE 
MyMethod(VALUE self, VALUE flazm, VALUE saszm)
{
    return Qnil;
}

他にも不明な点があります。正規表現ベースの「解析」は非常に単純です。

于 2009-06-23T13:29:46.507 に答える