Sha256: 0716715adbb4e00701dfb2845ab85553321c7b0ba4fb0adc91a3f82d5b86841f

Contents?: true

Size: 1.16 KB

Versions: 15

Compression:

Stored size: 1.16 KB

Contents

# encoding: utf-8

module TTY
  class Prompt
    class AnswersCollector
      # Initialize answer collector
      #
      # @api public
      def initialize(prompt, options = {})
        @prompt  = prompt
        @answers = options.fetch(:answers) { {} }
      end

      # Start gathering answers
      #
      # @return [Hash]
      #   the collection of all answers
      #
      # @api public
      def call(&block)
        instance_eval(&block)
        @answers
      end

      # Create answer entry
      #
      # @example
      #   key(:name).ask('Name?')
      #
      # @api public
      def key(name, &block)
        @name = name
        if block
          answer = create_collector.(&block)
          add_answer(answer)
        end
        self
      end

      # @api public
      def create_collector
        self.class.new(@prompt)
      end

      # @api public
      def add_answer(answer)
        @answers[@name] = answer
      end

      private

      # @api private
      def method_missing(method, *args, &block)
        answer = @prompt.public_send(method, *args, &block)
        add_answer(answer)
      end
    end # AnswersCollector
  end # Prompt
end # TTY

Version data entries

15 entries across 15 versions & 2 rubygems

Version Path
tty-prompt-0.14.0 lib/tty/prompt/answers_collector.rb
tty-prompt-0.13.2 lib/tty/prompt/answers_collector.rb
tty-prompt-0.13.1 lib/tty/prompt/answers_collector.rb
tty-prompt-0.13.0 lib/tty/prompt/answers_collector.rb
austb-tty-prompt-0.13.0 lib/tty/prompt/answers_collector.rb
tty-prompt-0.12.0 lib/tty/prompt/answers_collector.rb
tty-prompt-0.11.0 lib/tty/prompt/answers_collector.rb
tty-prompt-0.10.1 lib/tty/prompt/answers_collector.rb
tty-prompt-0.10.0 lib/tty/prompt/answers_collector.rb
tty-prompt-0.9.0 lib/tty/prompt/answers_collector.rb
tty-prompt-0.8.0 lib/tty/prompt/answers_collector.rb
tty-prompt-0.7.1 lib/tty/prompt/answers_collector.rb
tty-prompt-0.7.0 lib/tty/prompt/answers_collector.rb
tty-prompt-0.6.0 lib/tty/prompt/answers_collector.rb
tty-prompt-0.5.0 lib/tty/prompt/answers_collector.rb