class QandA::Question::Question

Public Class Methods

new(message: '', default: nil, &validation) click to toggle source
# File lib/question/question.rb, line 4
def initialize(message: '', default: nil, &validation)
  @msg        = message
  @default    = default
  @validation ||= validation ? validation : nil
  @answer     = nil
end

Public Instance Methods

answer() click to toggle source
# File lib/question/question.rb, line 26
def answer
  @answer
end
ask() { || ... } click to toggle source
# File lib/question/question.rb, line 11
def ask(&block)
  yield if block_given?
  str = "#{@msg}"
  str << " [#{@default}]" if @default
  str << ': '
  while @answer == nil do
    print str
    a       = $stdin.gets.chomp
    a       = @default if @default && a.empty?
    @answer = a unless @validation
    @answer = a if @validation && instance_exec(a, &@validation)
    puts "Invalid answer, try again" unless @answer
  end
end