C'è qualcosa di simile a Nokogiri per analizzare il codice Ruby?
-
28-10-2019 - |
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'"?
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.