Class: Spoom::Deadcode::Remover::NodeRemover

Inherits:
Object
  • Object
show all
Defined in:
lib/spoom/deadcode/remover.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(source, kind, location) ⇒ NodeRemover

: (String source, Definition::Kind? kind, Location location) -> void



32
33
34
35
36
37
38
39
# File 'lib/spoom/deadcode/remover.rb', line 32

def initialize(source, kind, location)
  @old_source = source
  @new_source = source.dup #: String
  @kind = kind
  @location = location

  @node_context = NodeFinder.find(source, location, kind) #: NodeContext
end

Instance Attribute Details

#new_sourceObject (readonly)

: String



29
30
31
# File 'lib/spoom/deadcode/remover.rb', line 29

def new_source
  @new_source
end

Instance Method Details

#apply_editObject

: -> void



42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# File 'lib/spoom/deadcode/remover.rb', line 42

def apply_edit
  sclass_context = @node_context.sclass_context
  if sclass_context
    delete_node_and_comments_and_sigs(sclass_context)
    return
  end

  node = @node_context.node
  case node
  when Prism::ClassNode, Prism::ModuleNode, Prism::DefNode
    delete_node_and_comments_and_sigs(@node_context)
  when Prism::ConstantWriteNode, Prism::ConstantOperatorWriteNode,
        Prism::ConstantAndWriteNode, Prism::ConstantOrWriteNode,
        Prism::ConstantPathWriteNode, Prism::ConstantPathOperatorWriteNode,
        Prism::ConstantPathAndWriteNode, Prism::ConstantPathOrWriteNode,
        Prism::ConstantTargetNode
    delete_constant_assignment(@node_context)
  when Prism::SymbolNode # for attr accessors
    delete_attr_accessor(@node_context)
  else
    raise Error, "Unsupported node type: #{node.class}"
  end
end