summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAbinoam Praxedes Marques Jr <abinoam@gmail.com>2015-05-19 23:37:37 -0300
committerAbinoam Praxedes Marques Jr <abinoam@gmail.com>2015-05-20 00:03:29 -0300
commit03f730d5b54e86e395b202dc8141da5b3cadee1c (patch)
tree59d094969842f2ceebf5070e81673afb75c7b2d1
parent5ce99662840ae748884be6253cb92bc51000c04f (diff)
downloadhighline-03f730d5b54e86e395b202dc8141da5b3cadee1c.tar.gz
Extract HighLine#get_response_getc_mode
-rwxr-xr-xlib/highline.rb22
-rwxr-xr-xlib/highline/question.rb5
2 files changed, 16 insertions, 11 deletions
diff --git a/lib/highline.rb b/lib/highline.rb
index e74da67..50170f4 100755
--- a/lib/highline.rb
+++ b/lib/highline.rb
@@ -748,20 +748,21 @@ class HighLine
end
end
+ def get_response_getc_mode(question)
+ response = @input.getbyte.chr
+ question.format_answer(response)
+ end
+
def get_response_character_mode(question)
terminal.raw_no_echo_mode
begin
- if question.character == :getc
- response = @input.getbyte.chr
+ response = terminal.get_character(@input).chr
+ if question.overwrite
+ @output.print("\r#{HighLine.Style(:erase_line).code}")
+ @output.flush
else
- response = terminal.get_character(@input).chr
- if question.overwrite
- @output.print("\r#{HighLine.Style(:erase_line).code}")
- @output.flush
- else
- echo = get_echo(question, response)
- say("#{echo}\n")
- end
+ echo = get_echo(question, response)
+ say("#{echo}\n")
end
ensure
terminal.restore_mode
@@ -780,6 +781,7 @@ class HighLine
end
public :get_response_character_mode, :get_response_line_mode
+ public :get_response_getc_mode
def actual_length(text)
Wrapper.actual_length text
diff --git a/lib/highline/question.rb b/lib/highline/question.rb
index 9d7992f..673d139 100755
--- a/lib/highline/question.rb
+++ b/lib/highline/question.rb
@@ -475,7 +475,10 @@ class HighLine
def get_response(highline)
return first_answer if first_answer?
- if character
+ case character
+ when :getc
+ highline.get_response_getc_mode(self)
+ when true
highline.get_response_character_mode(self)
else
highline.get_response_line_mode(self)