如何使 rdoc 从我的 c 扩展中正确读取方法参数?

发布于 2024-07-25 16:01:40 字数 441 浏览 6 评论 0原文

总之,我正在使用 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;
}

我有办法让这个工作成功吗?

all, I'm using rdoc to generate documentation for my Ruby code which contains C-extensions, but I'm having problems with my method arguments. Rdoc doesn't parse their names correctly and instead uses p1, p2 etc.

So, first off, my extensions are actually compiled as C++ so I have to use function definitions that look like this:

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

It looks like rdoc expects old style "C" definitions like this:

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

Is there anyway I can make this work?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

千鲤 2024-08-01 16:01:40

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

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

RDoc is completely clueless about argument names in C extensions*. This is how RDoc compiles the string of arguments:

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

Changing your source formatting won't help.

To improve your documentation, you could use the call-seq directive. You can specify one or more ways to invoke your method, which will be used instead of the default method(p1, p2) stuff.

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

* It is clueless about some other things as well. Regex-based "parsing" is very naive.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文