Как я могу заставить rdoc правильно читать аргументы метода из моего расширения c?

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

Вопрос

все, я использую 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;
}

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

Это было полезно?

Решение

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top