Module: RubyPython::Operators
- Included in:
- RubyPyProxy
- Defined in:
- lib/rubypython/operators.rb
Overview
A mixin module to provide method delegation to a proxy class. This is done either by delegating to methods defined on the wrapped object or by using the Python operator module. A large number of the methods are dynamically generated and so their documentation is not provided here. In general all operators that can be overloaded are delegated.
Class Method Summary collapse
-
.bin_op(rname, pname) ⇒ Object
Creates a method to delegate a binary operation.
-
.operator_ ⇒ Object
Provides access to the Python operator module.
-
.rel_op(rname, pname) ⇒ Object
Creates a method to delegate a relational operator.
-
.unary_op(rname, pname) ⇒ Object
Creates a method to delegate a relational operator.
-
.update(status) ⇒ Object
Called by RubyPython when the interpreter is started or stopped so that the necessary preparation or cleanup can be done.
Instance Method Summary collapse
-
#<=>(other) ⇒ Object
Delegates Comparison to Python.
-
#[](index) ⇒ Object
Delegates object indexed access to the wrapped Python object.
-
#[]=(index, value) ⇒ Object
Delegates setting of various indices to the wrapped Python object.
-
#include?(item) ⇒ Boolean
Delegates membership testing to Python.
Class Method Details
.bin_op(rname, pname) ⇒ Object
Creates a method to delegate a binary operation. The result of the operation will follow the conversion rules appropriate to the current mode of operation as set by RubyPython.legacy_mode.
- rname
-
The name of the Ruby method for this operation. Can be either a
Symbol or a String.
- pname
-
The name of the Python magic method to which this method should
be delegated.
19 20 21 22 23 |
# File 'lib/rubypython/operators.rb', line 19 def self.bin_op(rname, pname) define_method rname.to_sym do |other| self.__send__(pname, other) end end |
.operator_ ⇒ Object
Provides access to the Python operator module.
8 9 10 |
# File 'lib/rubypython/operators.rb', line 8 def self.operator_ @@operator ||= RubyPython.import('operator') end |
.rel_op(rname, pname) ⇒ Object
Creates a method to delegate a relational operator. The result of the delegated method will always be converted to a Ruby type so that simple boolean testing may occur. These methods are implemented with calls the operator module.
- rname
-
The name of the Ruby method for this operation. Can be a Symbol
or a String.
- pname
-
The name of the Python magic method to which this method should
be delegated.
34 35 36 37 38 |
# File 'lib/rubypython/operators.rb', line 34 def self.rel_op(rname, pname) define_method rname.to_sym do |other| RubyPython::Operators.operator_.__send__(pname, self, other).rubify end end |
.unary_op(rname, pname) ⇒ Object
Creates a method to delegate a relational operator. The result of the operation will follow the conversion rules appropriate to the current mode of operation as set by RubyPython.legacy_mode. These methods are implemented with calls the operator module.
- rname
-
The name of the Ruby method for this operation. Can be a Symbol
or a String.
- pname
-
The name of the Python magic method to which this method should
be delegated.
48 49 50 51 52 |
# File 'lib/rubypython/operators.rb', line 48 def self.unary_op(rname, pname) define_method rname.to_sym do RubyPython::Operators.operator_.__send__(pname, self) end end |
.update(status) ⇒ Object
Called by RubyPython when the interpreter is started or stopped so that the necessary preparation or cleanup can be done. For internal use only.
111 112 113 114 115 116 |
# File 'lib/rubypython/operators.rb', line 111 def self.update(status) case status when :stop @@operator = nil end end |
Instance Method Details
#<=>(other) ⇒ Object
Delegates Comparison to Python.
105 106 107 |
# File 'lib/rubypython/operators.rb', line 105 def <=>(other) RubyPython::PyMain.cmp(self, other) end |
#[](index) ⇒ Object
Delegates object indexed access to the wrapped Python object.
90 91 92 |
# File 'lib/rubypython/operators.rb', line 90 def [](index) self.__getitem__ index end |
#[]=(index, value) ⇒ Object
Delegates setting of various indices to the wrapped Python object.
95 96 97 |
# File 'lib/rubypython/operators.rb', line 95 def []=(index, value) self.__setitem__ index, value end |
#include?(item) ⇒ Boolean
Delegates membership testing to Python.
100 101 102 |
# File 'lib/rubypython/operators.rb', line 100 def include?(item) self.__contains__(item).rubify end |