Class: RuboCop::AST::Builder

Inherits:
Parser::Builders::Default
  • Object
show all
Defined in:
lib/rubocop/ast/builder.rb

Overview

‘RuboCop::AST::Builder` is an AST builder that is utilized to let `Parser` generate ASTs with Node.

Examples:

buffer = Parser::Source::Buffer.new('(string)')
buffer.source = 'puts :foo'

builder = RuboCop::AST::Builder.new
require 'parser/ruby25'
parser = Parser::Ruby25.new(builder)
root_node = parser.parse(buffer)

Constant Summary collapse

NODE_MAP =
{
  and: AndNode,
  args: ArgsNode,
  array: ArrayNode,
  block: BlockNode,
  break: BreakNode,
  case: CaseNode,
  def: DefNode,
  defined?: DefinedNode,
  defs: DefNode,
  ensure: EnsureNode,
  for: ForNode,
  hash: HashNode,
  if: IfNode,
  irange: RangeNode,
  erange: RangeNode,
  kwsplat: KeywordSplatNode,
  or: OrNode,
  pair: PairNode,
  regexp: RegexpNode,
  resbody: ResbodyNode,
  retry: RetryNode,
  csend: SendNode,
  send: SendNode,
  str: StrNode,
  dstr: StrNode,
  xstr: StrNode,
  super: SuperNode,
  zsuper: SuperNode,
  sym: SymbolNode,
  until: UntilNode,
  until_post: UntilNode,
  when: WhenNode,
  while: WhileNode,
  while_post: WhileNode,
  yield: YieldNode
}.freeze

Instance Method Summary collapse

Instance Method Details

#n(type, children, source_map) ⇒ Node

Generates Node from the given information.

Returns:

  • (Node)

    the generated node



58
59
60
# File 'lib/rubocop/ast/builder.rb', line 58

def n(type, children, source_map)
  node_klass(type).new(type, children, location: source_map)
end

#string_value(token) ⇒ Object

TODO: Figure out what to do about literal encoding handling… More details here github.com/whitequark/parser/issues/283



64
65
66
# File 'lib/rubocop/ast/builder.rb', line 64

def string_value(token)
  value(token)
end