Come posso fare in modo che rdoc legga correttamente gli argomenti del metodo dalla mia estensione c?

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

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?

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top