Sha256: 572e3af75af45147770e3c18ba8c3a51cc76e7a4e9085d44704bf2bb14b3da95
Contents?: true
Size: 1.57 KB
Versions: 3
Compression:
Stored size: 1.57 KB
Contents
# frozen_string_literal: true module Cucumber module TagExpressions # Literal expression node class Literal def initialize(value) @value = value end def evaluate(variables) variables.include?(@value) end def to_s @value .gsub(/\\/, '\\\\\\\\') .gsub(/\(/, '\\(') .gsub(/\)/, '\\)') .gsub(/\s/, '\\ ') end end # Not expression node class Not def initialize(expression) @expression = expression end def evaluate(variables) !@expression.evaluate(variables) end def to_s if @expression.is_a?(And) || @expression.is_a?(Or) # -- HINT: Binary operations already provide "( ... )" "not #{@expression}" else "not ( #{@expression} )" end end end # Or expression node class Or def initialize(left, right) @left = left @right = right end def evaluate(variables) @left.evaluate(variables) || @right.evaluate(variables) end def to_s "( #{@left} or #{@right} )" end end # And expression node class And def initialize(left, right) @left = left @right = right end def evaluate(variables) @left.evaluate(variables) && @right.evaluate(variables) end def to_s "( #{@left} and #{@right} )" end end class True def evaluate(_variables) true end def to_s 'true' end end end end
Version data entries
3 entries across 3 versions & 1 rubygems