Module: RuboCop::AST::ConditionalNode

Included in:
CaseMatchNode, CaseNode, IfNode, UntilNode, WhileNode
Defined in:
lib/rubocop/ast/node/mixin/conditional_node.rb

Overview

Common functionality for nodes that have conditions: ‘if`, `while`, `until`, `case`. This currently doesn’t include ‘when` nodes, because they have multiple conditions, and need to be checked for that.

Instance Method Summary collapse

Instance Method Details

#bodyNode?

Note:

For ‘if` nodes, this is the truthy branch.

Returns the body associated with the condition. This works together with each node’s custom destructuring method to select the correct part of the node.

Returns:

  • (Node, nil)

    the body of the node



40
41
42
# File 'lib/rubocop/ast/node/mixin/conditional_node.rb', line 40

def body
  node_parts[1]
end

#conditionNode?

Returns the condition of the node. This works together with each node’s custom destructuring method to select the correct part of the node.

Returns:

  • (Node, nil)

    the condition of the node



29
30
31
# File 'lib/rubocop/ast/node/mixin/conditional_node.rb', line 29

def condition
  node_parts[0]
end

#multiline_condition?Boolean

Checks whether the condition of the node is written on more than one line.

Returns:

  • (Boolean)

    whether the condition is on more than one line



21
22
23
# File 'lib/rubocop/ast/node/mixin/conditional_node.rb', line 21

def multiline_condition?
  !single_line_condition?
end

#single_line_condition?Boolean

Checks whether the condition of the node is written on a single line.

Returns:

  • (Boolean)

    whether the condition is on a single line



13
14
15
# File 'lib/rubocop/ast/node/mixin/conditional_node.rb', line 13

def single_line_condition?
  loc.keyword.line == condition.source_range.line
end