Welcome to mirror list, hosted at ThFree Co, Russian Federation.

logical_operator.rb « lexeme « expression « pipeline « ci « gitlab « lib - gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 05d5043c06ea3aaeb6cabe25b634d916c8da0c61 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# frozen_string_literal: true

module Gitlab
  module Ci
    module Pipeline
      module Expression
        module Lexeme
          class LogicalOperator < Lexeme::Operator
            # This operator class is design to handle single operators that take two
            # arguments. Expression::Parser was originally designed to read infix operators,
            # and so the two operands are called "left" and "right" here. If we wish to
            # implement an Operator that takes a greater or lesser number of arguments, a
            # structural change or additional Operator superclass will likely be needed.

            def initialize(left, right)
              raise OperatorError, 'Invalid left operand' unless left.respond_to? :evaluate
              raise OperatorError, 'Invalid right operand' unless right.respond_to? :evaluate

              @left = left
              @right = right
            end

            def inspect
              "#{name}(#{@left.inspect}, #{@right.inspect})"
            end

            def self.type
              :logical_operator
            end
          end
        end
      end
    end
  end
end