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