Come posso fare in modo che rdoc legga correttamente gli argomenti del metodo dalla mia estensione c?
-
06-07-2019 - |
Domanda
tutto, sto usando rdoc per generare documentazione per il mio codice Ruby che contiene estensioni-C, ma sto riscontrando problemi con gli argomenti del mio metodo. Rdoc non analizza correttamente i loro nomi e utilizza invece p1, p2 ecc.
Quindi, prima di tutto, le mie estensioni sono in realtà compilate come C ++, quindi devo usare le definizioni delle funzioni che assomigliano a questo:
static VALUE
MyMethod(VALUE self, VALUE flazm, VALUE saszm)
{
return Qnil;
}
Sembra che rdoc si aspetti un vecchio stile "C" definizioni come questa:
static VALUE
MyMethod(self, flazm, saszm)
VALUE self;
VALUE flazm;
VALUE saszm;
{
return Qnil;
}
Posso comunque farlo funzionare?
Soluzione
RDoc è completamente all'oscuro dei nomi degli argomenti nelle estensioni C *. Ecco come RDoc compila la stringa di argomenti:
meth_obj.params = "(" + (1..p_count).map{|i| "p#{i}"}.join(", ") + ")"
La modifica della formattazione di origine non sarà di aiuto.
Per migliorare la documentazione, è possibile utilizzare la direttiva call-seq
. Puoi specificare uno o più modi per invocare il tuo metodo, che verrà utilizzato al posto del metodo predefinito (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;
}
* È anche all'oscuro di alcune altre cose. Basato su Regex "analisi" è molto ingenuo.