lib/tty/prompt/mask_question.rb in tty-prompt-0.10.1 vs lib/tty/prompt/mask_question.rb in tty-prompt-0.11.0

- old
+ new

@@ -1,7 +1,10 @@ # encoding: utf-8 +require_relative 'question' +require_relative 'symbols' + module TTY class Prompt class MaskQuestion < Question # Create masked question # @@ -9,11 +12,11 @@ # @option options [String] :mask # # @api public def initialize(prompt, options = {}) super - @mask = options.fetch(:mask) { Symbols::ITEM_SECURE } + @mask = options.fetch(:mask) { Symbols.symbols[:dot] } @done_masked = false @failure = false @prompt.subscribe(self) end @@ -52,33 +55,39 @@ header = "#{@prefix}#{message} " if echo? masked = "#{@mask * "#{@input}".length}" if @done_masked && !@failure masked = @prompt.decorate(masked, @active_color) + elsif @done_masked && @failure + masked = @prompt.decorate(masked, @error_color) end header += masked end @prompt.print(header) - @prompt.print("\n") if @done + @prompt.puts if @done + + header.lines.count + (@done ? 1 : 0) end - def render_error_or_finish(result) - @failure = result.failure? + def render_error(errors) + @failure = !errors.empty? super end # Read input from user masked by character # # @private def read_input @done_masked = false + @failure = false @input = '' + until @done_masked - @prompt.read_keypress(echo?) + @prompt.read_keypress @prompt.print(@prompt.clear_line) render_question end - @prompt.print("\n") + @prompt.puts @input end end # MaskQuestion end # Prompt end # TTY