From b56945438907cab91680564f61a4f3c674fcf01e Mon Sep 17 00:00:00 2001 From: Mike Taylor Date: Mon, 2 Dec 2024 21:55:30 -0800 Subject: [PATCH] restore support for IRB <= v1.13.0 --- lib/iruby/backend.rb | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/lib/iruby/backend.rb b/lib/iruby/backend.rb index 156d78f..84cd160 100644 --- a/lib/iruby/backend.rb +++ b/lib/iruby/backend.rb @@ -50,7 +50,6 @@ def initialize @irb = IRB::Irb.new(@workspace) @eval_path = @irb.context.irb_path IRB.conf[:MAIN_CONTEXT] = @irb.context - @completor = IRB::RegexpCompletor.new end def eval_binding @@ -58,13 +57,22 @@ def eval_binding end def eval(code, store_history) - @irb.context.evaluate(@irb.build_statement(code), 0) + if Gem::Version.new(IRB::VERSION) < Gem::Version.new('1.13.0') + @irb.context.evaluate(code, 0) + else + @irb.context.evaluate(@irb.build_statement(code), 0) + end @irb.context.last_value unless IRuby.silent_assignment && assignment_expression?(code) end def complete(code) - # preposing and postposing never used, so they are empty, pass only target as code - @completor.completion_candidates('', code, '', bind: @workspace.binding) + if defined? IRB::RegexpCompletor # IRB::VERSION >= 1.8.2 + completor = IRB::RegexpCompletor.new + # preposing and postposing never used, so they are empty, pass only target as code + completor.completion_candidates('', code, '', bind: @workspace.binding) + else + IRB::InputCompletor::CompletionProc.call(code) + end end private