Sha256: 2143a755faa7aa62e1b5f34f273ad91813d2702d0ad6160ca89d15a4458bf04b

Contents?: true

Size: 729 Bytes

Versions: 1

Compression:

Stored size: 729 Bytes

Contents

module Interactive
  class Question
    attr_accessor :question, :options

    def initialize(&block)
      yield self

      @options = Interactive::Options.new(Array(@options))

      raise ArgumentError, "question cannot be nil nor empty." if question.nil? || question.empty?
      raise ArgumentError, "options cannot be empty." if options.empty?
    end

    def ask_and_wait_for_valid_response(&block)
      loop do
        puts "#{question} #{options.shortcuts_string}"
        resp = Interactive::Response.new(options)
        puts options.shortcuts_meanings if resp.invalid?

        yield resp
        break unless resp.invalid?
      end
    end

    private

    def response
      STDIN.gets.chomp
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
interactive-0.1.0 lib/interactive/question.rb