Class: Amazon::WebServices::MTurk::QuestionGenerator

Inherits:
Object
  • Object
show all
Defined in:
lib/amazon/webservices/mturk/question_generator.rb

Constant Summary collapse

PREAMBLE =
'<?xml version="1.0" encoding="UTF-8"?>'+"\n"+'<QuestionForm xmlns="http://mechanicalturk.amazonaws.com/AWSMechanicalTurkDataSchemas/2005-10-01/QuestionForm.xsd">'
OVERVIEW =
'<Overview>%s</Overview>'
QUESTION =
'<Question><QuestionIdentifier>%s</QuestionIdentifier><QuestionContent>%s</QuestionContent><AnswerSpecification>%s</AnswerSpecification></Question>'
TAIL =
'</QuestionForm>'

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(type = :Basic) ⇒ QuestionGenerator

Returns a new instance of QuestionGenerator.



18
19
20
21
22
# File 'lib/amazon/webservices/mturk/question_generator.rb', line 18

def initialize(type=:Basic)
  @overview = nil
  @questions = []
  @type = type
end

Class Method Details

.build(type = :Basic) {|question| ... } ⇒ Object

Yields:

  • (question)


12
13
14
15
16
# File 'lib/amazon/webservices/mturk/question_generator.rb', line 12

def self.build(type=:Basic)
  question = self.new(type)
  yield question
  return question.to_xml
end

Instance Method Details

#ask(*args) ⇒ Object



24
25
26
27
28
29
# File 'lib/amazon/webservices/mturk/question_generator.rb', line 24

def ask(*args)
  case @type
  when :Basic
    askBasic( args.join )
  end
end

#askBasic(text) ⇒ Object



31
32
33
34
35
36
37
# File 'lib/amazon/webservices/mturk/question_generator.rb', line 31

def askBasic(text)
  id = "BasicQuestion#{@questions.size+1}"
  question = REXML::Element.new 'Text'
  question.text = text
  answerSpec = "<FreeTextAnswer/>"
  @questions << { :Id => id, :Question => question.to_s, :AnswerSpec => answerSpec }
end

#to_xmlObject



39
40
41
42
43
44
45
46
47
# File 'lib/amazon/webservices/mturk/question_generator.rb', line 39

def to_xml
  components = [PREAMBLE]
  components << OVERVIEW % @overview unless @overview.nil?
  for question in @questions
    components << QUESTION % [ question[:Id], question[:Question], question[:AnswerSpec] ]
  end
  components << [TAIL]
  return components.join    
end