Как я могу заставить rdoc правильно читать аргументы метода из моего расширения c? - PullRequest
3 голосов
/ 23 июня 2009

все, я использую rdoc для генерации документации для моего кода Ruby, который содержит C-расширения, но у меня проблемы с аргументами моего метода. 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;
}

Можно ли как-нибудь сделать эту работу?

1 Ответ

3 голосов
/ 23 июня 2009

RDoc совершенно не знает имен аргументов в расширениях C *. Вот как RDoc компилирует строку аргументов:

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

Изменение исходного форматирования не поможет.

Чтобы улучшить документацию, вы можете использовать директиву call-seq. Вы можете указать один или несколько способов вызова вашего метода, который будет использоваться вместо стандартного 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;
}

* Он не имеет никакого отношения и к другим вещам. «Разбор» на основе регулярных выражений очень наивен.

...