Class: RuboCop::AST::CaseMatchNode
- Includes:
- ConditionalNode
- Defined in:
- lib/rubocop/ast/node/case_match_node.rb
Overview
A node extension for case_match nodes. This will be used in place of a plain node when the builder constructs the AST, making its methods available to all case_match 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::LOOP_TYPES, Node::MUTABLE_LITERALS, Node::OPERATOR_KEYWORDS, Node::POST_CONDITION_LOOP_TYPES, Node::REFERENCES, Node::SHORTHAND_ASSIGNMENTS, Node::SPECIAL_KEYWORDS, Node::TRUTHY_LITERALS, Node::VARIABLES
Instance Method Summary collapse
-
#branches ⇒ Array<Node, nil>
Returns an array of all the when branches in the
casestatement. -
#each_in_pattern(&block) ⇒ Object
deprecated
Deprecated.
Use
in_pattern_branches.each -
#else? ⇒ Boolean
Checks whether this case statement has an
elsebranch. -
#else_branch ⇒ Node, ...
Returns the else branch of the
casestatement, if any. -
#in_pattern_branches ⇒ Array<InPatternNode>
Returns an array of all the
inpattern branches in thecasestatement. -
#keyword ⇒ String
Returns the keyword of the
casestatement as a string.
Methods included from ConditionalNode
#body, #condition, #multiline_condition?, #single_line_condition?
Methods inherited from Node
#ancestors, #any_block_type?, #any_def_type?, #any_match_pattern_type?, #any_str_type?, #any_sym_type?, #argument?, #argument_type?, #assignment?, #assignment_or_similar?, #basic_conditional?, #basic_literal?, #boolean_type?, #call_type?, #chained?, #class_constructor?, #class_definition?, #complete!, #complete?, #conditional?, #const_name, #defined_module, #defined_module_name, #each_ancestor, #empty_source?, #equals_asgn?, #falsey_literal?, #first_line, #global_const?, #guard_clause?, #immutable_literal?, #initialize, #keyword?, #lambda?, #lambda_or_proc?, #last_line, #left_sibling, #left_siblings, #line_count, #literal?, #loc?, #loc_is?, #loop_keyword?, #match_guard_clause?, #module_definition?, #multiline?, #mutable_literal?, #nonempty_line_count, #numeric_type?, #operator_keyword?, #parent, #parent?, #parent_module_name, #parenthesized_call?, #post_condition_loop?, #proc?, #pure?, #range_type?, #receiver, #recursive_basic_literal?, #recursive_literal?, #reference?, #right_sibling, #right_siblings, #root?, #send_type?, #shorthand_asgn?, #sibling_index, #single_line?, #source, #source_length, #source_range, #special_keyword?, #str_content, #struct_constructor?, #truthy_literal?, #type?, #updated, #value_used?, #variable?
Methods included from NodePattern::Macros
#def_node_matcher, #def_node_search
Methods included from Descendence
#child_nodes, #descendants, #each_child_node, #each_descendant, #each_node
Methods included from Sexp
Constructor Details
This class inherits a constructor from RuboCop::AST::Node
Instance Method Details
#branches ⇒ Array<Node, nil>
Returns an array of all the when branches in the case statement.
and the else (if any). Note that these bodies could be nil.
38 39 40 41 42 43 44 45 |
# File 'lib/rubocop/ast/node/case_match_node.rb', line 38 def branches bodies = in_pattern_branches.map(&:body) if else? # `empty-else` node sets nil because it has no body. else_branch.empty_else_type? ? bodies.push(nil) : bodies.push(else_branch) end bodies end |
#each_in_pattern(&block) ⇒ Object
Use in_pattern_branches.each
19 20 21 22 23 24 25 |
# File 'lib/rubocop/ast/node/case_match_node.rb', line 19 def each_in_pattern(&block) return in_pattern_branches.to_enum(__method__) unless block in_pattern_branches.each(&block) self end |
#else? ⇒ Boolean
Checks whether this case statement has an else branch.
59 60 61 |
# File 'lib/rubocop/ast/node/case_match_node.rb', line 59 def else? !loc.else.nil? end |
#else_branch ⇒ Node, ...
Returns the else branch of the case statement, if any.
52 53 54 |
# File 'lib/rubocop/ast/node/case_match_node.rb', line 52 def else_branch node_parts[-1] end |
#in_pattern_branches ⇒ Array<InPatternNode>
Returns an array of all the in pattern branches in the case statement.
30 31 32 |
# File 'lib/rubocop/ast/node/case_match_node.rb', line 30 def in_pattern_branches node_parts[1...-1] end |
#keyword ⇒ String
Returns the keyword of the case statement as a string.
14 15 16 |
# File 'lib/rubocop/ast/node/case_match_node.rb', line 14 def keyword 'case' end |