[ruby/irb] Improve method completion for string and regexp that
includes word break characters (https://github.com/ruby/irb/pull/523) * Improve method completion for string and regexp that includes word break characters * Remove completion-test's assert_not_include because candidates no longer include every possible methods * Add comment about string's method completion regexp Co-authored-by: Stan Lo <stan001212@gmail.com> * Add comment about regexp's method completion regexp Co-authored-by: Stan Lo <stan001212@gmail.com> --------- https://github.com/ruby/irb/commit/aa8128c533 Co-authored-by: Stan Lo <stan001212@gmail.com>
This commit is contained in:
parent
62e2b61607
commit
0463c5806a
@ -166,10 +166,12 @@ module IRB
|
||||
|
||||
def self.retrieve_completion_data(input, bind: IRB.conf[:MAIN_CONTEXT].workspace.binding, doc_namespace: false)
|
||||
case input
|
||||
when /^((["'`]).*\2)\.([^.]*)$/
|
||||
# this regexp only matches the closing character because of irb's Reline.completer_quote_characters setting
|
||||
# details are described in: https://github.com/ruby/irb/pull/523
|
||||
when /^(.*["'`])\.([^.]*)$/
|
||||
# String
|
||||
receiver = $1
|
||||
message = $3
|
||||
message = $2
|
||||
|
||||
if doc_namespace
|
||||
"String.#{message}"
|
||||
@ -178,7 +180,9 @@ module IRB
|
||||
select_message(receiver, message, candidates)
|
||||
end
|
||||
|
||||
when /^(\/[^\/]*\/)\.([^.]*)$/
|
||||
# this regexp only matches the closing character because of irb's Reline.completer_quote_characters setting
|
||||
# details are described in: https://github.com/ruby/irb/pull/523
|
||||
when /^(.*\/)\.([^.]*)$/
|
||||
# Regexp
|
||||
receiver = $1
|
||||
message = $2
|
||||
|
@ -14,11 +14,15 @@ module TestIRB
|
||||
class TestMethodCompletion < TestCompletion
|
||||
def test_complete_string
|
||||
assert_include(IRB::InputCompletor.retrieve_completion_data("'foo'.up", bind: binding), "'foo'.upcase")
|
||||
# completing 'foo bar'.up
|
||||
assert_include(IRB::InputCompletor.retrieve_completion_data("bar'.up", bind: binding), "bar'.upcase")
|
||||
assert_equal("String.upcase", IRB::InputCompletor.retrieve_completion_data("'foo'.upcase", bind: binding, doc_namespace: true))
|
||||
end
|
||||
|
||||
def test_complete_regexp
|
||||
assert_include(IRB::InputCompletor.retrieve_completion_data("/foo/.ma", bind: binding), "/foo/.match")
|
||||
# completing /foo bar/.ma
|
||||
assert_include(IRB::InputCompletor.retrieve_completion_data("bar/.ma", bind: binding), "bar/.match")
|
||||
assert_equal("Regexp.match", IRB::InputCompletor.retrieve_completion_data("/foo/.match", bind: binding, doc_namespace: true))
|
||||
end
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user