总而言之,我正在使用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)东西。
/*
 * 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;
}

*对于其他一些事情也一无所知。基于正则表达式的“解析”非常幼稚。

关于c++ - 如何使rdoc从我的c扩展名中正确读取方法参数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1030100/

10-13 08:27