Class: Hotdog::Commands::Search::BinaryExpressionNode
- Inherits:
-
ExpressionNode
- Object
- ExpressionNode
- Hotdog::Commands::Search::BinaryExpressionNode
- Defined in:
- lib/hotdog/commands/search.rb
Instance Method Summary collapse
- #evaluate(environment) ⇒ Object
-
#initialize(op, left, right) ⇒ BinaryExpressionNode
constructor
A new instance of BinaryExpressionNode.
Constructor Details
#initialize(op, left, right) ⇒ BinaryExpressionNode
160 161 162 163 164 |
# File 'lib/hotdog/commands/search.rb', line 160 def initialize(op, left, right) @op = op @left = left @right = right end |
Instance Method Details
#evaluate(environment) ⇒ Object
165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 |
# File 'lib/hotdog/commands/search.rb', line 165 def evaluate(environment) case @op when "&&", "&", /\Aand\z/i left_values = @left.evaluate(environment) if left_values.empty? [] else right_values = @right.evaluate(environment) (left_values & right_values) end when "||", "|", /\Aor\z/i left_values = @left.evaluate(environment) right_values = @right.evaluate(environment) (left_values | right_values).uniq else raise(SyntaxError.new("unknown binary operator: #{@op}")) end end |