mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
parent
c94735fa24
commit
c25511ef46
2 changed files with 56 additions and 12 deletions
|
@ -30,18 +30,47 @@ opt.on('--dynamic-prompt-returns-empty') {
|
|||
opt.on('--auto-indent') {
|
||||
AutoIndent.new
|
||||
}
|
||||
opt.on('--simple-dialog') {
|
||||
opt.on('--dialog VAL') { |v|
|
||||
Reline.add_dialog_proc(:simple_dialog, lambda {
|
||||
contents = <<~RUBY.split("\n")
|
||||
Ruby is...
|
||||
A dynamic, open source programming
|
||||
language with a focus on simplicity
|
||||
and productivity. It has an elegant
|
||||
syntax that is natural to read and
|
||||
easy to write.
|
||||
RUBY
|
||||
Reline::DialogRenderInfo.new(pos: cursor_pos, contents: contents)
|
||||
})
|
||||
if v.include?('simple')
|
||||
contents = <<~RUBY.split("\n")
|
||||
Ruby is...
|
||||
A dynamic, open source programming
|
||||
language with a focus on simplicity
|
||||
and productivity. It has an elegant
|
||||
syntax that is natural to read and
|
||||
easy to write.
|
||||
RUBY
|
||||
elsif v.include?('long')
|
||||
contents = <<~RUBY.split("\n")
|
||||
Ruby is...
|
||||
A dynamic, open
|
||||
source programming
|
||||
language with a
|
||||
focus on simplicity
|
||||
and productivity.
|
||||
It has an elegant
|
||||
syntax that is
|
||||
natural to read
|
||||
and easy to write.
|
||||
RUBY
|
||||
end
|
||||
if v.include?('scrollkey')
|
||||
dialog.trap_key = nil
|
||||
if key and key.match?(dialog.name)
|
||||
if context.pointer.nil?
|
||||
context.pointer = 0
|
||||
elsif context.first > dialog.contents.size
|
||||
context.pointer = 0
|
||||
else
|
||||
context.pointer += 1
|
||||
end
|
||||
end
|
||||
dialog.trap_key = [?j.ord]
|
||||
height = 4
|
||||
end
|
||||
Reline::DialogRenderInfo.new(pos: cursor_pos, contents: contents, height: height, pointer: context.pointer)
|
||||
}, Struct.new(:pointer).new)
|
||||
}
|
||||
opt.on('--complete') {
|
||||
Reline.completion_proc = lambda { |target, preposing = nil, postposing = nil|
|
||||
|
|
|
@ -836,7 +836,7 @@ begin
|
|||
end
|
||||
|
||||
def test_simple_dialog
|
||||
start_terminal(20, 50, %W{ruby -I#{@pwd}/lib #{@pwd}/test/reline/yamatanooroti/multiline_repl --simple-dialog}, startup_message: 'Multiline REPL.')
|
||||
start_terminal(20, 50, %W{ruby -I#{@pwd}/lib #{@pwd}/test/reline/yamatanooroti/multiline_repl --dialog simple}, startup_message: 'Multiline REPL.')
|
||||
write('a')
|
||||
write('b')
|
||||
write('c')
|
||||
|
@ -854,6 +854,21 @@ begin
|
|||
EOC
|
||||
end
|
||||
|
||||
def test_simple_dialog_with_scroll_key
|
||||
start_terminal(20, 50, %W{ruby -I#{@pwd}/lib #{@pwd}/test/reline/yamatanooroti/multiline_repl --dialog long,scrollkey}, startup_message: 'Multiline REPL.')
|
||||
write('a')
|
||||
5.times{ write('j') }
|
||||
close
|
||||
assert_screen(<<~'EOC')
|
||||
Multiline REPL.
|
||||
prompt> a
|
||||
A dynamic, open
|
||||
source programming
|
||||
language with a
|
||||
focus on simplicity
|
||||
EOC
|
||||
end
|
||||
|
||||
def test_autocomplete
|
||||
start_terminal(20, 30, %W{ruby -I#{@pwd}/lib #{@pwd}/test/reline/yamatanooroti/multiline_repl --autocomplete}, startup_message: 'Multiline REPL.')
|
||||
write("Stri")
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue