Skip to content

Commit 8973e3b

Browse files
committed
Support event system in the latest IRuby
1 parent 4159f3b commit 8973e3b

File tree

1 file changed

+14
-3
lines changed

1 file changed

+14
-3
lines changed

lib/matplotlib/iruby.rb

+14-3
Original file line numberDiff line numberDiff line change
@@ -214,13 +214,24 @@ def configure_inline_support(backend)
214214
# Temporally monky-patching IRuby kernel to enable flushing and closing figures.
215215
# TODO: Make this feature a pull-request for sciruby/iruby.
216216
kernel = ::IRuby::Kernel.instance
217-
kernel.extend HookExtension
217+
kernel.extend HookExtension unless kernel.respond_to?(:events)
218218
if backend == GUI_BACKEND_MAP[:inline]
219-
kernel.register_event(:post_execute, method(:flush_figures))
219+
if kernel.respond_to?(:register_event)
220+
kernel.register_event(:post_execute, method(:flush_figures))
221+
else
222+
@post_execute_func = kernel.events.register(:post_execute, &method(:flush_figures))
223+
end
224+
220225
# TODO: save original rcParams and overwrite rcParams with IRuby-specific configuration
221226
new_backend_name = :inline
222227
else
223-
kernel.unregister_event(:post_execute, method(:flush_figures))
228+
if kernel.respond_to?(:unregister_event)
229+
kernel.unregister_event(:post_execute, method(:flush_figures))
230+
elsif @post_execute_func
231+
kernel.events.unregister(:post_execute, @post_execute_func)
232+
@post_execute_func = nil
233+
end
234+
224235
# TODO: restore saved original rcParams
225236
new_backend_name = :not_inline
226237
end

0 commit comments

Comments
 (0)