Class: Question

Inherits:
Object
  • Object
show all
Defined in:
lib/ruql/question.rb

Direct Known Subclasses

Dropdown, FillIn, MultipleChoice, TrueFalse

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(*args) ⇒ Question

Returns a new instance of Question.



4
5
6
7
8
9
10
11
12
# File 'lib/ruql/question.rb', line 4

def initialize(*args)
  options = if args[-1].kind_of?(Hash) then args[-1] else {} end
  @answers = options[:answers] || []
  @points = [options[:points].to_i, 1].max
  @raw = options[:raw]
  @name = options[:name]
  @question_tags = []
  @question_comment = ''
end

Instance Attribute Details

#answersObject

Returns the value of attribute answers.



2
3
4
# File 'lib/ruql/question.rb', line 2

def answers
  @answers
end

#nameObject

Returns the value of attribute name.



2
3
4
# File 'lib/ruql/question.rb', line 2

def name
  @name
end

#pointsObject

Returns the value of attribute points.



2
3
4
# File 'lib/ruql/question.rb', line 2

def points
  @points
end

#question_commentObject

Returns the value of attribute question_comment.



2
3
4
# File 'lib/ruql/question.rb', line 2

def question_comment
  @question_comment
end

#question_tagsObject

Returns the value of attribute question_tags.



2
3
4
# File 'lib/ruql/question.rb', line 2

def question_tags
  @question_tags
end

#question_textObject

Returns the value of attribute question_text.



2
3
4
# File 'lib/ruql/question.rb', line 2

def question_text
  @question_text
end

#randomizeObject

Returns the value of attribute randomize.



2
3
4
# File 'lib/ruql/question.rb', line 2

def randomize
  @randomize
end

Instance Method Details

#answer(text, opts = {}) ⇒ Object



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

def answer(text, opts={})
  @answers << Answer.new(text, correct=true, opts[:explanation])
end

#comment(str = '') ⇒ Object



39
40
41
# File 'lib/ruql/question.rb', line 39

def comment(str = '')
  @question_comment = str.to_s
end

#correct_answerObject



43
# File 'lib/ruql/question.rb', line 43

def correct_answer ;  @answers.detect(&:correct?)  ;  end

#correct_answersObject



45
# File 'lib/ruql/question.rb', line 45

def correct_answers ;  @answers.collect(&:correct?) ; end

#distractor(text, opts = {}) ⇒ Object



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

def distractor(text, opts={})
  @answers << Answer.new(text, correct=false, opts[:explanation])
end

#explanation(text) ⇒ Object



18
19
20
# File 'lib/ruql/question.rb', line 18

def explanation(text)
  @answers.each { |answer| answer.explanation ||= text }
end

#raw?Boolean

Returns:

  • (Boolean)


14
# File 'lib/ruql/question.rb', line 14

def raw? ; !!@raw ; end

#tags(*args) ⇒ Object

these are ignored but legal for now:



31
32
33
34
35
36
37
# File 'lib/ruql/question.rb', line 31

def tags(*args) # string or array of strings
  if args.length > 1
    @question_tags += args.map(&:to_s)
  else
    @question_tags << args.first.to_s
  end
end

#text(s) ⇒ Object



16
# File 'lib/ruql/question.rb', line 16

def text(s) ; @question_text = s ; end