Frage

Nokogiri ist großartig.Ich kann Dinge wie #css('.bla') tun, die das erste übereinstimmende Element zurückgeben.

Im Moment müssen wir den Ruby-Quellcode analysieren - alle Methoden innerhalb einer Klasse finden usw. Wir verwenden ruby_parser gem, aber alles, was es tut, ist Ihren Quellcode zu kämmen und S-Ausdrücke auszuspucken.Gibt es etwas wie Nokogiri für diese S-Ausdrücke, das Dinge wie "S-Ausdruck für die erste gefundene Methode namens 'foo' zurückgeben" kann?

War es hilfreich?

Lösung

Das einzige, woran ich denken kann, ist Adam Sandersons SExpPath-Bibliothek .

Andere Tipps

Obwohl ich Jörgs Antwort akzeptiere, weil sie vollständiger ist, habe ich am Ende etwas anderes entdeckt, das ich letztendlich verwendet habe.ruby_parser installiert einen abhängigen Edelstein mit dem Namen sexp_processor (in diesem Edelstein ist die Sexp-Klasse tatsächlich definiert).Wenn Sie die Klassendokumente anzeigen, gibt es einige Methoden, die bei einfachen Ruby-Methoden hilfreich sindFinder.Hier ist ein Beispiel:

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
  }
}

Ich weiß nichts über Edelsteine, nach denen Sie suchen, aber Sie können alle Methoden innerhalb einer Klasse mit instance_methods finden:

class Foo
  def bar
  end
end

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

Sie können den Rubinius-Parser überprüfen, er kann Ihnen dabei helfen, das zu tun, was Sie wollen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top