module AlgebraDB::Value::Operations::Definition
Base class that provides a DSL to quickly define things.
Public Instance Methods
binop(name, pg_name, ret_val)
click to toggle source
# File lib/algebra_db/value/operations/definition.rb, line 7 def binop(name, pg_name, ret_val) # rubocop:disable Metrics/MethodLength method_body = if ret_val == :self proc do |rhs| op = ::AlgebraDB::Build::Op.new(pg_name, self, rhs) self.class.new(op) end else ret_type = ::AlgebraDB::Value.const_get(ret_val) proc { |rhs| ret_type.new(::AlgebraDB::Build::Op.new(pg_name, self, rhs)) } end define_method(name, &method_body) end