Class: Interactive::Question

Inherits:
Object
  • Object
show all
Extended by:
Forwardable
Defined in:
lib/interactive/question.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize {|_self| ... } ⇒ Question

Returns a new instance of Question.

Yields:

  • (_self)

Yield Parameters:

Raises:

  • (ArgumentError)


9
10
11
12
13
14
15
16
17
18
19
20
# File 'lib/interactive/question.rb', line 9

def initialize(&block)
  yield self

  @options = Interactive::Options(Array(@options), @columns)

  raise ArgumentError, "question cannot be nil nor empty." if question.nil? || question.empty?
  if @columns || @options.has_hash?
    @question_type = QuestionWithEagerFullExplanation.new(self)
  else
    @question_type = QuestionWithLazyFullExplanation.new(self)
  end
end

Instance Attribute Details

#columnsObject

Returns the value of attribute columns.



6
7
8
# File 'lib/interactive/question.rb', line 6

def columns
  @columns
end

#optionsObject

Returns the value of attribute options.



6
7
8
# File 'lib/interactive/question.rb', line 6

def options
  @options
end

#questionObject

Returns the value of attribute question.



6
7
8
# File 'lib/interactive/question.rb', line 6

def question
  @question
end

Instance Method Details

#ask(&block) ⇒ Object



26
27
28
# File 'lib/interactive/question.rb', line 26

def ask(&block)
  ask_and_wait_for_valid_response(&block)
end

#ask_and_wait_for_valid_response(&block) ⇒ Object



22
23
24
# File 'lib/interactive/question.rb', line 22

def ask_and_wait_for_valid_response(&block)
  @question_type.ask_and_wait_for_valid_response(&block)
end