123456789_123456789_123456789_123456789_123456789_

Class: RuboCop::AST::NodePattern::Compiler::AtomSubcompiler

Relationships & Source Files
Super Chains via Extension / Inclusion / Inheritance
Class Chain:
self, Subcompiler
Instance Chain:
self, Subcompiler
Inherits: RuboCop::AST::NodePattern::Compiler::Subcompiler
Defined in: lib/rubocop/ast/node_pattern/compiler/atom_subcompiler.rb

Overview

Generates code that evaluates to a value (Ruby object) This value responds to ===.

Doc on how this fits in the compiling process: /docs/modules/ROOT/pages/node_pattern.adoc

Class Attribute Summary

Subcompiler - Inherited

Class Method Summary

Instance Attribute Summary

Subcompiler - Inherited

Instance Method Summary

Subcompiler - Inherited

Constructor Details

This class inherits a constructor from RuboCop::AST::NodePattern::Compiler::Subcompiler

Instance Method Details

#visit_const (private)

[ GitHub ]

  
# File 'lib/rubocop/ast/node_pattern/compiler/atom_subcompiler.rb', line 28

def visit_const
  node.child
end

#visit_named_parameter (private)

[ GitHub ]

  
# File 'lib/rubocop/ast/node_pattern/compiler/atom_subcompiler.rb', line 32

def visit_named_parameter
  compiler.named_parameter(node.child)
end

#visit_number (private)

Alias for #visit_symbol.

[ GitHub ]

  
# File 'lib/rubocop/ast/node_pattern/compiler/atom_subcompiler.rb', line 24

alias visit_number visit_symbol

#visit_other_type (private)

Assumes other types are node patterns.

[ GitHub ]

  
# File 'lib/rubocop/ast/node_pattern/compiler/atom_subcompiler.rb', line 46

def visit_other_type
  compiler.with_temp_variables do |compare|
    code = compiler.compile_as_node_pattern(node, var: compare)
    "->(#{compare}) { #{code} }"
  end
end

#visit_positional_parameter (private)

[ GitHub ]

  
# File 'lib/rubocop/ast/node_pattern/compiler/atom_subcompiler.rb', line 36

def visit_positional_parameter
  compiler.positional_parameter(node.child)
end

#visit_regexp (private)

Alias for #visit_symbol.

[ GitHub ]

  
# File 'lib/rubocop/ast/node_pattern/compiler/atom_subcompiler.rb', line 26

alias visit_regexp visit_symbol

#visit_set (private)

[ GitHub ]

  
# File 'lib/rubocop/ast/node_pattern/compiler/atom_subcompiler.rb', line 40

def visit_set
  set = node.children.to_set(&:child).freeze
  NodePattern::Sets[set]
end

#visit_string (private)

Alias for #visit_symbol.

[ GitHub ]

  
# File 'lib/rubocop/ast/node_pattern/compiler/atom_subcompiler.rb', line 25

alias visit_string visit_symbol

#visit_symbol (private) Also known as: #visit_number, #visit_string, #visit_regexp

[ GitHub ]

  
# File 'lib/rubocop/ast/node_pattern/compiler/atom_subcompiler.rb', line 21

def visit_symbol
  node.child.inspect
end

#visit_unify (private)

[ GitHub ]

  
# File 'lib/rubocop/ast/node_pattern/compiler/atom_subcompiler.rb', line 15

def visit_unify
  compiler.bind(node.child) do
    raise Invalid, 'unified variables can not appear first as argument'
  end
end