c拡張からメソッド引数をrdocに正しく読み取らせるにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/1030100

質問

すべて、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;
}

とにかくこの作品を作ることができますか?

役に立ちましたか?

解決

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

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

ソースのフォーマットを変更しても効果はありません。

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

/*
 * 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;
}

* 他のことについても無知です。正規表現ベースの「解析」非常に素朴です。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top