Class: RuboCop::AST::CaseNode

Inherits:
Node
  • Object
show all
Includes:
ConditionalNode
Defined in:
lib/rubocop/ast/node/case_node.rb

Overview

A node extension for case nodes. This will be used in place of a plain node when the builder constructs the AST, making its methods available to all case nodes within RuboCop.

Constant Summary

Constants inherited from Node

Node::ASSIGNMENTS, Node::BASIC_CONDITIONALS, Node::BASIC_LITERALS, Node::COMPARISON_OPERATORS, Node::COMPOSITE_LITERALS, Node::CONDITIONALS, Node::EQUALS_ASSIGNMENTS, Node::FALSEY_LITERALS, Node::IMMUTABLE_LITERALS, Node::KEYWORDS, Node::LITERALS, Node::MUTABLE_LITERALS, Node::OPERATOR_KEYWORDS, Node::REFERENCES, Node::SHORTHAND_ASSIGNMENTS, Node::SPECIAL_KEYWORDS, Node::TRUTHY_LITERALS, Node::VARIABLES

Instance Method Summary collapse

Methods included from ConditionalNode

#body, #condition, #multiline_condition?, #single_line_condition?

Methods inherited from Node

#ancestors, #argument?, #assignment?, #basic_conditional?, #basic_literal?, #chained?, #child_nodes, #complete!, #complete?, #conditional?, #const_name, #defined_module, #defined_module_name, #descendants, #each_ancestor, #each_child_node, #each_descendant, #each_node, #empty_source?, #equals_asgn?, #falsey_literal?, #first_line, #immutable_literal?, #initialize, #keyword?, #last_line, #line_count, #literal?, #multiline?, #mutable_literal?, #node_parts, #nonempty_line_count, #numeric_type?, #operator_keyword?, #parent, #parent_module_name, #parenthesized_call?, #pure?, #range_type?, #receiver, #reference?, #shorthand_asgn?, #sibling_index, #single_line?, #source, #source_length, #source_range, #special_keyword?, #truthy_literal?, #updated, #value_used?, #variable?

Methods included from NodePattern::Macros

#def_node_matcher, #def_node_search, #node_search, #node_search_all, #node_search_body, #node_search_first

Methods included from Sexp

#s

Constructor Details

This class inherits a constructor from RuboCop::AST::Node

Instance Method Details

#each_whenself, Enumerator

Calls the given block for each when node in the case statement. If no block is given, an Enumerator is returned.



23
24
25
26
27
28
29
30
31
# File 'lib/rubocop/ast/node/case_node.rb', line 23

def each_when
  return when_branches.to_enum(__method__) unless block_given?

  when_branches.each do |condition|
    yield condition
  end

  self
end

#else?Boolean

Checks whether this case statement has an else branch.



51
52
53
# File 'lib/rubocop/ast/node/case_node.rb', line 51

def else?
  loc.else
end

#else_branchNode?

Returns the else branch of the case statement, if any.



44
45
46
# File 'lib/rubocop/ast/node/case_node.rb', line 44

def else_branch
  node_parts[-1]
end

#keywordString

Returns the keyword of the case statement as a string.



14
15
16
# File 'lib/rubocop/ast/node/case_node.rb', line 14

def keyword
  'case'
end

#when_branchesArray<WhenNode>

Returns an array of all the when branches in the case statement.



36
37
38
# File 'lib/rubocop/ast/node/case_node.rb', line 36

def when_branches
  node_parts[1...-1]
end