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 ""?

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top