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