[ruby/irb] Restore IRB::InputCompletor for compatibility

(https://github.com/ruby/irb/pull/730)

https://github.com/ruby/irb/commit/77265efc5f
This commit is contained in:
tomoya ishida 2023-10-14 23:12:37 +09:00 коммит произвёл git
Родитель 96cd73d78f
Коммит 4e5c505bad
2 изменённых файлов: 41 добавлений и 0 удалений

Просмотреть файл

@ -415,4 +415,20 @@ module IRB
end
end
end
module InputCompletor
class << self
private def regexp_completor
@regexp_completor ||= RegexpCompletor.new
end
def retrieve_completion_data(input, bind: IRB.conf[:MAIN_CONTEXT].workspace.binding, doc_namespace: false)
regexp_completor.retrieve_completion_data(input, bind: bind, doc_namespace: doc_namespace)
end
end
CompletionProc = ->(target, preposing = nil, postposing = nil) {
regexp_completor.completion_candidates(preposing, target, postposing, bind: IRB.conf[:MAIN_CONTEXT].workspace.binding)
}
end
deprecate_constant :InputCompletor
end

Просмотреть файл

@ -265,4 +265,29 @@ module TestIRB
assert_include(doc_namespace("private_hoge", bind), "private_hoge")
end
end
class DeprecatedInputCompletorTest < TestCase
def setup
@verbose, $VERBOSE = $VERBOSE, nil
IRB.init_config(nil)
IRB.conf[:MAIN_CONTEXT] = IRB::Context.new(IRB::WorkSpace.new(binding))
end
def teardown
$VERBOSE = @verbose
end
def test_completion_proc
assert_include(IRB::InputCompletor::CompletionProc.call('1.ab'), '1.abs')
assert_include(IRB::InputCompletor::CompletionProc.call('1.ab', '', ''), '1.abs')
end
def test_retrieve_completion_data
assert_include(IRB::InputCompletor.retrieve_completion_data('1.ab'), '1.abs')
assert_equal(IRB::InputCompletor.retrieve_completion_data('1.abs', doc_namespace: true), 'Integer.abs')
bind = eval('a = 1; binding')
assert_include(IRB::InputCompletor.retrieve_completion_data('a.ab', bind: bind), 'a.abs')
assert_equal(IRB::InputCompletor.retrieve_completion_data('a.abs', bind: bind, doc_namespace: true), 'Integer.abs')
end
end
end