Pergunta

Nokogiri é incrível.Posso fazer coisas como #css('.bla'), que retornará o primeiro elemento correspondente.

No momento, precisamos fazer uma análise do código-fonte Ruby - encontrando todos os métodos dentro de uma classe, etc. Estamos usando o ruby_parser , mas tudo o que faz é pentear seu código-fonte e cuspir S-expressões.Existe algo como Nokogiri para essas expressões S que pode fazer coisas como "retornar a expressão S para o primeiro método encontrado com o nome 'foo'"?

Foi útil?

Solução

A única coisa em que consigo pensar é na biblioteca SExpPath de Adam Sanderson .

Outras dicas

Apesar de aceitar a resposta do Jörg por ser mais completa, acabei descobrindo outra coisa que acabei usando.ruby_parser instala uma gem dependente chamada sexp_processor (é nesta gem onde a classe Sexp é realmente definida).Se você visualizar os documentos de classe , existem alguns métodos que ajudarão com o Ruby básicolocalizadores.Aqui está um exemplo:

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

Não sei nada sobre gem que você está procurando, mas você pode encontrar todos os métodos em uma classe usando instance_methods:

class Foo
  def bar
  end
end

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

Você pode verificar o analisador rubinius, ele pode ajudá-lo a fazer o que você deseja.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top