Method: RubyPython.generator_type
- Defined in:
- lib/rubypython/pygenerator.rb
.generator_type ⇒ Object
Creates a Python generator object called rubypython_generator
that accepts a callback and yields to it.
Note: This method only exists in the RubyPython if the Fiber exists.
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
# File 'lib/rubypython/pygenerator.rb', line 17 def generator_type @generator_type ||= lambda do code = <<-EOM def rubypython_generator(callback): while True: yield callback() EOM globals = PyObject.new({ "__builtins__" => PyMain.builtin.pObject, }) empty_hash = PyObject.new({}) ptr = Python.PyRun_String(code, Python::PY_FILE_INPUT, globals.pointer, empty_hash.pointer) ptr = Python.PyRun_String("rubypython_generator", Python::PY_EVAL_INPUT, globals.pointer, empty_hash.pointer) raise PythonError.handle_error if PythonError.error? RubyPyProxy.new(PyObject.new(ptr)) end.call end |