not_matches.rb 735 Bytes
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13
# frozen_string_literal: true

module Gitlab
  module Ci
    module Pipeline
      module Expression
        module Lexeme
          class NotMatches < Lexeme::Operator
            PATTERN = /\!~/.freeze

            def evaluate(variables = {})
              text = @left.evaluate(variables)
              regexp = @right.evaluate(variables)
14
              return true unless regexp
15

16
              regexp.scan(text.to_s).empty?
17 18 19 20 21
            end

            def self.build(_value, behind, ahead)
              new(behind, ahead)
            end
22 23 24 25

            def self.precedence
              10 # See: https://ruby-doc.org/core-2.5.0/doc/syntax/precedence_rdoc.html
            end
26 27 28 29 30 31
          end
        end
      end
    end
  end
end