examples/print_methods.rb in sexp_path-0.4.0 vs examples/print_methods.rb in sexp_path-0.5.0
- old
+ new
@@ -1,28 +1,26 @@
require 'rubygems'
require File.dirname(__FILE__) + '/../lib/sexp_path'
-require 'parse_tree'
+require 'ruby_parser'
path = ARGV.shift
if !path
puts "Prints classes and methods in a file"
puts "usage:"
puts " ruby print_methods.rb <path>"
exit
end
code = File.read(path)
-sexp = Sexp.from_array(ParseTree.new.parse_tree_for_string(code, path))
+sexp = RubyParser.new.parse(code, path)
-class_query = Q?{ s(:class, atom % 'class_name', _, _) }
-method_query = Q?{ s(:defn, atom % 'method_name', _ ) }
+# Use the ruby pattern matcher:
+results = sexp / R?{ _class } / R?{ _method }
-results = sexp / class_query / method_query
-
puts path
puts "-" * 80
results.each do |sexp_result|
- class_name = sexp_result['class_name']
- method_name = sexp_result['method_name']
+ class_name = sexp_result['class']
+ method_name = sexp_result['method']
puts "#{class_name}##{method_name}"
end
\ No newline at end of file