class Kempelen::API::Common::QuestionFormAnswers

Attributes

answers[RW]

Public Class Methods

new(answer = nil) click to toggle source
# File lib/kempelen/API/common/question_form_answers.rb, line 9
def initialize(answer = nil)
  @answers = []

  load_from_answer(answer) unless answer.nil?
end

Public Instance Methods

get_answer(question_identifier, index = 0) click to toggle source
# File lib/kempelen/API/common/question_form_answers.rb, line 51
def get_answer(question_identifier, index = 0)
  @answers.select {|a| a.question_identifier == question_identifier}[index] rescue nil
end
load_from_answer(answer) click to toggle source
<?xml version="1.0" encoding="UTF-8" standalone="no"?>

<QuestionFormAnswers xmlns=“mechanicalturk.amazonaws.com/AWSMechanicalTurkDataSchemas/2005-10-01/QuestionFormAnswers.xsd”>

<Answer>
  <QuestionIdentifier>TranscriptionTexts</QuestionIdentifier>
  <FreeText>This is the second test.</FreeText>
</Answer>

</QuestionFormAnswers>

# File lib/kempelen/API/common/question_form_answers.rb, line 23
def load_from_answer(answer)
  parser = Nori.new(:parser => :rexml)
  parsed_data = parser.parse(answer)
  answer_list = parsed_data["QuestionFormAnswers"]["Answer"]

  unless answer_list.is_a?(Array)
    answer_list = [answer_list]
  end

  answer_list.each do |answer_data|
    if answer_data.has_key?("FreeText")
      @answers << FreeTextAnswer.new(answer_data["QuestionIdentifier"].to_s, answer_data["FreeText"].to_s)
    elsif answer_data.has_key?("SelectionIdentifier") or answer_data.has_key?("OtherSelectionText")
      new_answer = MultipleChoiceAnswer.new(answer_data["QuestionIdentifier"].to_s)

      selection = answer_data["SelectionIdentifier"]
      if selection.is_a?(Array)
        new_answer.selection_identifiers += selection
      else
        new_answer.selection_identifiers << selection
      end
      new_answer.other_selection_text = answer_data["OtherSelectionText"]

      @answers << new_answer
    end
  end
end