Class: Spoom::Deadcode::Plugins::ActionPack

Inherits:
Base
  • Object
show all
Defined in:
lib/spoom/deadcode/plugins/actionpack.rb

Constant Summary collapse

CALLBACKS =
[
  "after_action",
  "append_after_action",
  "append_around_action",
  "append_before_action",
  "around_action",
  "before_action",
  "prepend_after_action",
  "prepend_around_action",
  "prepend_before_action",
  "skip_after_action",
  "skip_around_action",
  "skip_before_action",
].freeze

Instance Attribute Summary

Attributes inherited from Base

#index

Instance Method Summary collapse

Methods inherited from Base

ignore_classes_inheriting_from, ignore_classes_named, ignore_constants_named, ignore_methods_named, ignore_modules_named, #initialize, #internal_on_define_accessor, #internal_on_define_class, #internal_on_define_constant, #internal_on_define_method, #internal_on_define_module, #on_define_accessor, #on_define_class, #on_define_constant, #on_define_module

Constructor Details

This class inherits a constructor from Spoom::Deadcode::Plugins::Base

Instance Method Details

#on_define_method(definition) ⇒ Object

: (Model::Method definition) -> void



27
28
29
30
31
32
# File 'lib/spoom/deadcode/plugins/actionpack.rb', line 27

def on_define_method(definition)
  owner = definition.owner
  return unless owner.is_a?(Model::Class)

  @index.ignore(definition) if ignored_subclass?(owner)
end

#on_send(send) ⇒ Object

: (Send send) -> void



36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/spoom/deadcode/plugins/actionpack.rb', line 36

def on_send(send)
  return unless send.recv.nil? && CALLBACKS.include?(send.name)

  arg = send.args.first
  case arg
  when Prism::SymbolNode
    @index.reference_method(arg.unescaped, send.location)
  end

  send.each_arg_assoc do |key, value|
    key = key.slice.delete_suffix(":")

    case key
    when "if", "unless"
      @index.reference_method(value.slice.delete_prefix(":"), send.location) if value
    else
      @index.reference_constant(camelize(key), send.location)
    end
  end
end