Class: ImproveYourCode::TreeDresser

Inherits:
Object
  • Object
show all
Defined in:
lib/improve_your_code/tree_dresser.rb

Instance Method Summary collapse

Constructor Details

#initialize(klass_map: AST::ASTNodeClassMap.new) ⇒ TreeDresser

Returns a new instance of TreeDresser.



7
8
9
# File 'lib/improve_your_code/tree_dresser.rb', line 7

def initialize(klass_map: AST::ASTNodeClassMap.new)
  @klass_map = klass_map
end

Instance Method Details

#dress(sexp, comment_map) ⇒ Object



11
12
13
14
15
16
17
18
19
# File 'lib/improve_your_code/tree_dresser.rb', line 11

def dress(sexp, comment_map)
  return sexp unless sexp.is_a? ::Parser::AST::Node

  type = sexp.type
  children = sexp.children.map { |child| dress(child, comment_map) }
  comments = comment_map[sexp]

  klass_map.klass_for(type).new(type, children, location: sexp.loc, comments: comments)
end