lib/rubocop/ast/node/mixin/predicate_operator_node.rb
# frozen_string_literal: true
module RuboCop
module AST
# Common functionality for nodes that are predicates:
# `or`, `and` ...
module PredicateOperatorNode
LOGICAL_AND = '&&'
private_constant :LOGICAL_AND
SEMANTIC_AND = 'and'
private_constant :SEMANTIC_AND
LOGICAL_OR = '||'
private_constant :LOGICAL_OR
SEMANTIC_OR = 'or'
private_constant :SEMANTIC_OR
# Returns the operator as a string.
#
# @return [String] the operator
def operator
loc.operator.source
end
# Checks whether this is a logical operator.
#
# @return [Boolean] whether this is a logical operator
def logical_operator?
operator == LOGICAL_AND || operator == LOGICAL_OR
end
# Checks whether this is a semantic operator.
#
# @return [Boolean] whether this is a semantic operator
def semantic_operator?
operator == SEMANTIC_AND || operator == SEMANTIC_OR
end
end
end
end