Y a-t-il quelque chose de similaire à Nokogiri pour l'analyse du code rubis?
-
28-10-2019 - |
Question
Nokogiri est génial. Je peux faire des choses comme #css('.bla')
qui renverra le premier élément correspondant.
À l'heure actuelle, nous devons faire un analyse du code source Ruby - trouver toutes les méthodes dans une classe, etc. Nous utilisons ruby_parser Gem, mais tout ce qu'il fait est de peigner votre code source et de cracher des expressions S. Y a-t-il quelque chose comme NoKogiri pour ces expressions S qui peuvent faire des choses comme "Retour Expression S pour la première méthode trouvée nommée" Foo ""?
La solution
La seule chose à laquelle je peux penser, c'est Adam Sanderson SExpPath
bibliothèque.
Autres conseils
Bien que j'accepte la réponse de Jörg parce qu'elle est plus complète, j'ai fini par découvrir autre chose que j'ai fini par utiliser. Ruby_parser installe un joyau dépendant nommé sexp_processor (c'est dans ce joyau où le Sexp
La classe est réellement définie). Si vous affichez le Docs de classe Il existe quelques méthodes qui aideront les Ruby Finders de base. Voici un exemple:
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
}
}
Je ne sais rien de Gem que vous recherchez, mais vous pouvez trouver toutes les méthodes au sein d'une classe en utilisant instance_methods
:
class Foo
def bar
end
end
irb(main):005:0> Foo.instance_methods - Object.instance_methods
=> [:bar]
Vous pouvez vérifier l'analyseur Rubinius, cela peut vous aider à faire ce que vous voulez.