lib/gobstones/lang/expressions/two_arg_expression.rb in gobstones-0.0.2 vs lib/gobstones/lang/expressions/two_arg_expression.rb in gobstones-0.0.3
- old
+ new
@@ -1,38 +1,31 @@
-require 'gobstones/modules/equal_by_class'
+require 'gobstones/lang/expressions/expression'
module Gobstones
-
module Lang
-
- class TwoArgExpression
-
- include Gobstones::EqualByClass
-
+ class TwoArgExpression < Expression
attr_reader :left_expr, :right_expr
def self.evaluates_with(selector)
instance_eval do
define_method :evaluate do |*args|
context = args.first
- left_expr.evaluate(context)
- .send(selector, right_expr.evaluate(context))
+ left_expr.evaluate(context).send(selector, right_expr.evaluate(context))
end
+
+ define_method :to_s do
+ "#{selector} expression"
+ end
end
end
def initialize(left, right)
@left_expr = left
@right_expr = right
end
- def ==(other)
- super(other) &&
- self.left_expr == other.left_expr &&
- self.right_expr == other.right_expr
+ def equality_attributes
+ %i[left_expr right_expr]
end
-
end
-
end
-
end