Domanda

Nokogiri è fantastico.Posso fare cose come #css('.bla') che restituirà il primo elemento corrispondente.

In questo momento dobbiamo analizzare il codice sorgente di Ruby - trovare tutti i metodi all'interno di una classe ecc. Stiamo usando ruby_parser gem, ma tutto ciò che fa è pettinare il codice sorgente e sputare espressioni S.C'è qualcosa come Nokogiri per queste espressioni S che può fare cose come "restituire l'espressione S per il primo metodo trovato chiamato 'foo'"?

È stato utile?

Soluzione

L'unica cosa a cui riesco a pensare è la la libreria SExpPath di Adam Sanderson .

Altri suggerimenti

Anche se accetto la risposta di Jörg perché è più completa, ho finito per scoprire qualcos'altro che ho finito per usare.ruby_parser installa una gemma dipendente denominata sexp_processor (è in questa gemma che viene effettivamente definita la classe Sexp).Se visualizzi i documenti di classe ci sono alcuni metodi che ti aiuteranno con Ruby di basecercatori.Ecco un esempio:

class Sexp
  def name          # convenience method
    self.sexp_body.first
  end
end    

# Print out all instance methods within classes. Beware - if "code" sexp itself
# is a class, it will NOT be included!
code = RubyParser.new.parse(IO.read('/src/file'))
code.each_of_type(:class){ |klass|
  klass.each_of_type(:defn){ |meth|
    puts meth.name
  }
}

Non so nulla di gem che stai cercando, ma puoi trovare tutti i metodi all'interno di una classe utilizzando instance_methods:

class Foo
  def bar
  end
end

irb(main):005:0> Foo.instance_methods - Object.instance_methods
=> [:bar]

Potresti controllare il parser rubinius, potrebbe aiutarti a fare quello che vuoi.

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