mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
Fix regexp to complete complex literal
IRB completion logic always needed exponential notation for complex literal such as 3e6i but it's bug. I fixed to support complex literal without exponential notation such as 3i.
This commit is contained in:
parent
8b4ee5d6ba
commit
7d75e94ea9
2 changed files with 8 additions and 5 deletions
|
@ -42,9 +42,7 @@ module IRB
|
||||||
retrieve_completion_data(input).compact.map{ |i| i.encode(Encoding.default_external) }
|
retrieve_completion_data(input).compact.map{ |i| i.encode(Encoding.default_external) }
|
||||||
}
|
}
|
||||||
|
|
||||||
def self.retrieve_completion_data(input, doc_namespace = false)
|
def self.retrieve_completion_data(input, bind: IRB.conf[:MAIN_CONTEXT].workspace.binding, doc_namespace: false)
|
||||||
bind = IRB.conf[:MAIN_CONTEXT].workspace.binding
|
|
||||||
|
|
||||||
case input
|
case input
|
||||||
when /^((["'`]).*\2)\.([^.]*)$/
|
when /^((["'`]).*\2)\.([^.]*)$/
|
||||||
# String
|
# String
|
||||||
|
@ -145,7 +143,7 @@ module IRB
|
||||||
select_message(receiver, message, candidates, sep)
|
select_message(receiver, message, candidates, sep)
|
||||||
end
|
end
|
||||||
|
|
||||||
when /^(?<num>-?(0[dbo])?[0-9_]+(\.[0-9_]+)?([eE][+-]?[0-9]+i?|r)?)(?<sep>\.|::)(?<mes>[^.]*)$/
|
when /^(?<num>-?(0[dbo])?[0-9_]+(\.[0-9_]+)?(([eE][+-]?[0-9]+)?i?|r)?)(?<sep>\.|::)(?<mes>[^.]*)$/
|
||||||
# Numeric
|
# Numeric
|
||||||
receiver = $~[:num]
|
receiver = $~[:num]
|
||||||
sep = $~[:sep]
|
sep = $~[:sep]
|
||||||
|
@ -277,7 +275,7 @@ module IRB
|
||||||
end
|
end
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
namespace = retrieve_completion_data(matched, true)
|
namespace = retrieve_completion_data(matched, doc_namespace: true)
|
||||||
return unless matched
|
return unless matched
|
||||||
if namespace.is_a?(Array)
|
if namespace.is_a?(Array)
|
||||||
out = RDoc::Markup::Document.new
|
out = RDoc::Markup::Document.new
|
||||||
|
|
|
@ -19,5 +19,10 @@ module TestIRB
|
||||||
skip "cannot load irb/completion"
|
skip "cannot load irb/completion"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_complete_numeric
|
||||||
|
assert_include(IRB::InputCompletor.retrieve_completion_data("1r.positi", bind: binding), "1r.positive?")
|
||||||
|
assert_empty(IRB::InputCompletor.retrieve_completion_data("1i.positi", bind: binding))
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue