2009-06-23 4 views
3

все, я использую rdoc для создания документации для моего Ruby-кода, который содержит C-расширения, но у меня возникают проблемы с аргументами метода. RDoc не правильно разобрать их имена, а вместо этого использует p1, p2 и т.д.Как я могу сделать rdoc правильно читать аргументы метода из моего расширения c?

Итак, во-первых, мои расширения на самом деле компилируются как 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; 
} 

есть в любом случае я могу сделать эту работу?

ответ

3

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

* Это невежественное о некоторых других вещах. Основанный на Regex «синтаксический анализ» очень наивен.