display output on a different line from the prompt
git-svn-id: file:///home/svn/framework3/trunk@4643 4d416f70-5f16-0410-b530-b9f4589650daunstable
parent
a319b8e582
commit
67e39c15a1
|
@ -55,6 +55,22 @@ class Output
|
||||||
def flush
|
def flush
|
||||||
end
|
end
|
||||||
|
|
||||||
|
#
|
||||||
|
# Called to tell the output medium that we're at a prompt.
|
||||||
|
# This is used to allow the output medium to display an extra
|
||||||
|
# carriage return
|
||||||
|
#
|
||||||
|
def prompting(v = true)
|
||||||
|
@at_prompt = v
|
||||||
|
end
|
||||||
|
|
||||||
|
#
|
||||||
|
# Returns whether or not we're at a prompt currently
|
||||||
|
#
|
||||||
|
def prompting?
|
||||||
|
@at_prompt
|
||||||
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
|
@ -19,28 +19,40 @@ module Subscriber
|
||||||
# Wraps user_output.print_line
|
# Wraps user_output.print_line
|
||||||
#
|
#
|
||||||
def print_line(msg='')
|
def print_line(msg='')
|
||||||
user_output.print_line(msg) if (user_output)
|
if (user_output)
|
||||||
|
print_blank_line if user_output.prompting?
|
||||||
|
user_output.print_line(msg)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
#
|
#
|
||||||
# Wraps user_output.print_status
|
# Wraps user_output.print_status
|
||||||
#
|
#
|
||||||
def print_status(msg='')
|
def print_status(msg='')
|
||||||
user_output.print_status(msg) if (user_output)
|
if (user_output)
|
||||||
|
print_blank_line if user_output.prompting?
|
||||||
|
user_output.print_status(msg)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
#
|
#
|
||||||
# Wraps user_output.print_error
|
# Wraps user_output.print_error
|
||||||
#
|
#
|
||||||
def print_error(msg='')
|
def print_error(msg='')
|
||||||
user_output.print_error(msg) if (user_output)
|
if (user_output)
|
||||||
|
print_blank_line if user_output.prompting?
|
||||||
|
user_output.print_error(msg)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
#
|
#
|
||||||
# Wraps user_output.print_good
|
# Wraps user_output.print_good
|
||||||
#
|
#
|
||||||
def print_good(msg='')
|
def print_good(msg='')
|
||||||
user_output.print_good(msg) if (user_output)
|
if (user_output)
|
||||||
|
print_blank_line if user_output.prompting?
|
||||||
|
user_output.print_good(msg)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -62,6 +74,16 @@ module Subscriber
|
||||||
#
|
#
|
||||||
attr_accessor :user_output
|
attr_accessor :user_output
|
||||||
|
|
||||||
|
protected
|
||||||
|
|
||||||
|
#
|
||||||
|
# Prints a blank line. Used when the input is prompting.
|
||||||
|
#
|
||||||
|
def print_blank_line
|
||||||
|
user_output.prompting(false)
|
||||||
|
user_output.print_line
|
||||||
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
##
|
##
|
||||||
|
|
|
@ -129,12 +129,17 @@ begin
|
||||||
# Prompt-based getline using readline.
|
# Prompt-based getline using readline.
|
||||||
#
|
#
|
||||||
def pgets
|
def pgets
|
||||||
|
|
||||||
if (readline_status)
|
if (readline_status)
|
||||||
$stderr.puts "ERROR: pgets called inside of thread mode: " + caller(1).to_s
|
$stderr.puts "ERROR: pgets called inside of thread mode: " + caller(1).to_s
|
||||||
return ''
|
return ''
|
||||||
end
|
end
|
||||||
|
|
||||||
if ((line = ::Readline.readline(prompt, true)))
|
output.prompting
|
||||||
|
line = ::Readline.readline(prompt, true)
|
||||||
|
output.prompting(false)
|
||||||
|
|
||||||
|
if line
|
||||||
HISTORY.pop if (line.empty?)
|
HISTORY.pop if (line.empty?)
|
||||||
return line + "\n"
|
return line + "\n"
|
||||||
else
|
else
|
||||||
|
|
|
@ -24,7 +24,12 @@ module Shell
|
||||||
def pgets
|
def pgets
|
||||||
output.print(prompt)
|
output.print(prompt)
|
||||||
output.flush
|
output.flush
|
||||||
gets
|
|
||||||
|
output.prompting
|
||||||
|
buf = gets
|
||||||
|
output.prompting(false)
|
||||||
|
|
||||||
|
buf
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue