class ZombieScout::Parser
Attributes
called_methods[R]
defined_methods[R]
Public Class Methods
new(ruby_source)
click to toggle source
# File lib/zombie_scout/parser.rb, line 8 def initialize(ruby_source) @ruby_source = ruby_source @defined_methods = [] @called_methods = [] @class_module_stack = [] node = ::Parser::CurrentRuby.parse(@ruby_source.source) process(node) end
Public Instance Methods
on_class(node)
click to toggle source
# File lib/zombie_scout/parser.rb, line 17 def on_class(node) classname_const, superclass, body = *node classname = ConstExtracter.new.process(classname_const) @class_module_stack.push(classname) process(body) @class_module_stack.pop end
on_def(node)
click to toggle source
# File lib/zombie_scout/parser.rb, line 33 def on_def(node) method_name, args, body = *node stash_method(method_name, node) process(body) end
on_defs(node)
click to toggle source
# File lib/zombie_scout/parser.rb, line 39 def on_defs(node) self_node, method_name, args, body = *node stash_method(method_name, node) process(body) end
on_module(node)
click to toggle source
# File lib/zombie_scout/parser.rb, line 25 def on_module(node) modulename_const, body = *node modulename = ConstExtracter.new.process(modulename_const) @class_module_stack.push(modulename) process(body) @class_module_stack.pop end
on_send(node)
click to toggle source
# File lib/zombie_scout/parser.rb, line 45 def on_send(node) receiver, method_name, *args = *node if respond_to?(:"handle_#{method_name}", true) send(:"handle_#{method_name}", args, node) end @called_methods << method_name process_all(args) end
Private Instance Methods
handle_attr_accessor(args, node)
click to toggle source
# File lib/zombie_scout/parser.rb, line 72 def handle_attr_accessor(args, node) args.each do |arg| if_symbol(arg) do |attr_method_name| stash_method(attr_method_name, node) stash_method(:"#{attr_method_name}=", node) end end end
handle_attr_reader(args, node)
click to toggle source
# File lib/zombie_scout/parser.rb, line 56 def handle_attr_reader(args, node) args.each do |arg| if_symbol(arg) do |attr_method_name| stash_method(attr_method_name, node) end end end
handle_attr_writer(args, node)
click to toggle source
# File lib/zombie_scout/parser.rb, line 64 def handle_attr_writer(args, node) args.each do |arg| if_symbol(arg) do |attr_method_name| stash_method(:"#{attr_method_name}=", node) end end end
handle_def_delegator(args, node)
click to toggle source
# File lib/zombie_scout/parser.rb, line 89 def handle_def_delegator(args, node) if_symbol(args.last) do |attr_method_name| stash_method(attr_method_name, node) end end
handle_def_delegators(args, node)
click to toggle source
# File lib/zombie_scout/parser.rb, line 81 def handle_def_delegators(args, node) args.drop(1).each do |arg| if_symbol(arg) do |attr_method_name| stash_method(attr_method_name, node) end end end
handle_scope(args, node)
click to toggle source
# File lib/zombie_scout/parser.rb, line 95 def handle_scope(args, node) if_symbol(args.first) do |attr_method_name| stash_method(attr_method_name, node) end end
if_symbol(node) { |maybe_symbol| ... }
click to toggle source
# File lib/zombie_scout/parser.rb, line 101 def if_symbol(node) maybe_symbol = SymbolExtracter.new.process(node) if maybe_symbol.is_a? Symbol yield maybe_symbol end end
stash_method(method_name, node)
click to toggle source
# File lib/zombie_scout/parser.rb, line 108 def stash_method(method_name, node) line_number = node.location.line class_name = @class_module_stack.join('::') @defined_methods << Method.new(method_name, class_name, @ruby_source.path, line_number) end