class Smartdown::Api::State

Attributes

accepted_responses[R]
current_answers[R]
current_node[R]
previous_questionpage_smartdown_nodes[R]

Public Class Methods

new(current_node, previous_questionpage_smartdown_nodes, accepted_responses, current_answers) click to toggle source
# File lib/smartdown/api/state.rb, line 9
def initialize(current_node, previous_questionpage_smartdown_nodes, accepted_responses, current_answers)
  @current_node = current_node
  @previous_questionpage_smartdown_nodes = previous_questionpage_smartdown_nodes
  @accepted_responses = accepted_responses
  @current_answers = current_answers
end

Public Instance Methods

current_question_number() click to toggle source
# File lib/smartdown/api/state.rb, line 34
def current_question_number
  accepted_responses.count + 1
end
finished?() click to toggle source
# File lib/smartdown/api/state.rb, line 30
def finished?
  current_node.is_a? Smartdown::Api::Outcome
end
previous_answers() click to toggle source
# File lib/smartdown/api/state.rb, line 16
def previous_answers
  previous_question_pages.map { |previous_question_page|
    previous_question_page.answers
  }.flatten
end
previous_question_pages() click to toggle source
# File lib/smartdown/api/state.rb, line 22
def previous_question_pages
  @previous_question_pages ||= build_question_pages(accepted_responses)
end
started?() click to toggle source
# File lib/smartdown/api/state.rb, line 26
def started?
  !current_node.is_a? Smartdown::Api::Coversheet
end

Private Instance Methods

build_question_pages(responses) click to toggle source
# File lib/smartdown/api/state.rb, line 42
def build_question_pages(responses)
  resp = responses.dup
  previous_questionpage_smartdown_nodes.map do |smartdown_questionpage_node|
    page_questions = resp.take(smartdown_questionpage_node.questions.count)
    resp = resp.drop(smartdown_questionpage_node.questions.count)
    Smartdown::Api::PreviousQuestionPage.new(smartdown_questionpage_node, page_questions)
  end
end