class TTY::Prompt::ConfirmQuestion

Public Class Methods

new(prompt, options = {}) click to toggle source

Create confirmation question

@param [Hash] options @option options [String] :suffix @option options [String] :positive @option options [String] :negative

@api public

Calls superclass method
# File lib/tty/prompt/confirm_question.rb, line 17
def initialize(prompt, options = {})
  super
  @suffix   = options.fetch(:suffix)   { UndefinedSetting }
  @positive = options.fetch(:positive) { UndefinedSetting }
  @negative = options.fetch(:negative) { UndefinedSetting }
end

Public Instance Methods

call(message, &block) click to toggle source
# File lib/tty/prompt/confirm_question.rb, line 60
def call(message, &block)
  return if Utils.blank?(message)
  @message = message
  block.call(self) if block
  setup_defaults
  render
end
negative(value = (not_set = true)) click to toggle source

Set value for matching negative choice

@api public

# File lib/tty/prompt/confirm_question.rb, line 55
def negative(value = (not_set = true))
  return @negative if not_set
  @negative = value
end
negative?() click to toggle source
# File lib/tty/prompt/confirm_question.rb, line 28
def negative?
  @negative != UndefinedSetting
end
positive(value = (not_set = true)) click to toggle source

Set value for matching positive choice

@api public

# File lib/tty/prompt/confirm_question.rb, line 47
def positive(value = (not_set = true))
  return @positive if not_set
  @positive = value
end
positive?() click to toggle source
# File lib/tty/prompt/confirm_question.rb, line 24
def positive?
  @positive != UndefinedSetting
end
render_question() click to toggle source

Render confirmation question

@return [String]

@api private

# File lib/tty/prompt/confirm_question.rb, line 73
def render_question
  header = "#{@prefix}#{message} "
  if !@done
    header += @prompt.decorate("(#{@suffix})", @help_color) + ' '
  else
    answer = convert_result(@input)
    label  = answer ? @positive : @negative
    header += @prompt.decorate(label, @active_color)
  end
  header << "\n" if @done
  header
end
suffix(value = (not_set = true)) click to toggle source

Set question suffix

@api public

# File lib/tty/prompt/confirm_question.rb, line 39
def suffix(value = (not_set = true))
  return @negative if not_set
  @suffix = value
end
suffix?() click to toggle source
# File lib/tty/prompt/confirm_question.rb, line 32
def suffix?
  @suffix != UndefinedSetting
end

Protected Instance Methods

conversion() click to toggle source

Create custom conversion

@api private

# File lib/tty/prompt/confirm_question.rb, line 124
def conversion
  proc { |input| !input.match(/^#{positive}|#{positive[0]}$/i).nil? }
end
create_default_labels() click to toggle source

@api private

# File lib/tty/prompt/confirm_question.rb, line 107
def create_default_labels
  @suffix   = default ? 'Y/n' : 'y/N'
  @positive = default ? 'Yes' : 'yes'
  @negative = default ? 'no' : 'No'
end
create_suffix() click to toggle source

@api private

# File lib/tty/prompt/confirm_question.rb, line 114
def create_suffix
  result = ''
  result << "#{default ? positive.capitalize : positive.downcase}"
  result << '/'
  result << "#{default ? negative.downcase : negative.capitalize}"
end
setup_defaults() click to toggle source

@api private

# File lib/tty/prompt/confirm_question.rb, line 89
def setup_defaults
  return if suffix? && positive?

  if suffix? && (!positive? || !negative?)
    parts = @suffix.split('/')
    @positive = parts[0]
    @negative = parts[1]
    @convert = conversion
  elsif !suffix? && positive?
    @suffix = create_suffix
    @convert = conversion
  else
    create_default_labels
    @convert = :bool
  end
end