9

のこぎりはすごいです。#css('.bla')最初に一致する要素を返すようなことを行うことができます。

今のところ、Rubyソースコードの解析を行う必要があります。クラス内のすべてのメソッドを見つけるなどです。ruby_parsergemを使用していますが、ソースコードを組み合わせてS式を吐き出すだけです。「'foo'という名前の最初のメソッドのS式を返す」などのことができるこれらのS式のノコギリのようなものはありますか?

4

4 に答える 4

2

私が思いつく唯一のものは、Adam Sanderson のSExpPathライブラリです。

于 2011-06-17T09:27:39.437 に答える
2

Jörgの回答はより完全であるため受け入れていますが、最終的に使用することになった別のものを発見しました。ruby_parser は、sexp_processor という名前の依存 gem をインストールします(Sexpクラスが実際に定義されているのはこの gemです)。クラスのドキュメントを見ると、基本的な Ruby ファインダーに役立つメソッドがいくつかあります。次に例を示します。

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
  }
}
于 2011-06-20T22:18:25.123 に答える
0

あなたが探しているgemについては何も知りませんが、クラス内のすべてのメソッドを次のように使用して見つけることができますinstance_methods

class Foo
  def bar
  end
end

irb(main):005:0> Foo.instance_methods - Object.instance_methods
=> [:bar]
于 2011-06-17T07:39:57.100 に答える
0

rubinius パーサーを確認すると、やりたいことを実行するのに役立つ場合があります。

于 2011-06-18T17:00:53.390 に答える