class TTY::Prompt::AnswersCollector

Public Class Methods

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

Initialize answer collector

@api public

# File lib/tty/prompt/answers_collector.rb, line 9
def initialize(prompt, options = {})
  @prompt  = prompt
  @answers = options.fetch(:answers) { {} }
end

Public Instance Methods

add_answer(answer) click to toggle source

@api public

# File lib/tty/prompt/answers_collector.rb, line 46
def add_answer(answer)
  @answers[@name] = answer
end
call(&block) click to toggle source

Start gathering answers

@return [Hash]

the collection of all answers

@api public

# File lib/tty/prompt/answers_collector.rb, line 20
def call(&block)
  instance_eval(&block)
  @answers
end
create_collector() click to toggle source

@api public

# File lib/tty/prompt/answers_collector.rb, line 41
def create_collector
  self.class.new(@prompt)
end
key(name, &block) click to toggle source

Create answer entry

@example

key(:name).ask('Name?')

@api public

# File lib/tty/prompt/answers_collector.rb, line 31
def key(name, &block)
  @name = name
  if block
    answer = create_collector.(&block)
    add_answer(answer)
  end
  self
end

Private Instance Methods

method_missing(method, *args, &block) click to toggle source

@api private

# File lib/tty/prompt/answers_collector.rb, line 53
def method_missing(method, *args, &block)
  answer = @prompt.public_send(method, *args, &block)
  add_answer(answer)
end