Module: AlgebraDB::Value::Operations::Definition
- Included in:
- AlgebraDB::Value, Array::ArrayOps, Numeric
- Defined in:
- lib/algebra_db/value/operations/definition.rb
Overview
Base class that provides a DSL to quickly define things.
Instance Method Summary collapse
-
#binop(name, pg_name, ret_val) ⇒ Object
rubocop:disable Metrics/MethodLength.
Instance Method Details
#binop(name, pg_name, ret_val) ⇒ Object
rubocop:disable Metrics/MethodLength
7 8 9 10 11 12 13 14 15 16 17 18 19 |
# 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 |