diff options
author | Abinoam Praxedes Marques Jr <abinoam@gmail.com> | 2015-05-19 23:37:37 -0300 |
---|---|---|
committer | Abinoam Praxedes Marques Jr <abinoam@gmail.com> | 2015-05-20 00:03:29 -0300 |
commit | 03f730d5b54e86e395b202dc8141da5b3cadee1c (patch) | |
tree | 59d094969842f2ceebf5070e81673afb75c7b2d1 | |
parent | 5ce99662840ae748884be6253cb92bc51000c04f (diff) | |
download | highline-03f730d5b54e86e395b202dc8141da5b3cadee1c.tar.gz |
Extract HighLine#get_response_getc_mode
-rwxr-xr-x | lib/highline.rb | 22 | ||||
-rwxr-xr-x | lib/highline/question.rb | 5 |
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) |