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