Class: AtomicAssessmentsImport::Questions::Ordering

Inherits:
Question
  • Object
show all
Defined in:
lib/atomic_assessments_import/questions/ordering.rb

Constant Summary collapse

INDEXES =
("a".."o").to_a.freeze
ORDER_MARKER =
/\s*---\s*(\d+)\s*\z/

Instance Attribute Summary

Attributes inherited from Question

#reference

Instance Method Summary collapse

Methods inherited from Question

#initialize, load, #metadata, #points, #scoring_type, #to_learnosity

Constructor Details

This class inherits a constructor from AtomicAssessmentsImport::Questions::Question

Instance Method Details

#question_dataObject



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/atomic_assessments_import/questions/ordering.rb', line 16

def question_data
  raw_items = INDEXES.filter_map { |letter| @row["option #{letter}"] }

  if raw_items.any? { |item| item.match?(ORDER_MARKER) }
    list, valid_values = parse_order_markers(raw_items)
  else
    list = raw_items
    order = (@row["correct answer"] || "").split(";").map(&:strip).map(&:downcase)
    valid_values = order.filter_map { |letter| INDEXES.find_index(letter) }
  end

  super.merge(
    list: list,
    validation: {
      scoring_type: scoring_type,
      valid_response: {
        score: points,
        value: valid_values,
      },
    }
  )
end

#question_typeObject



10
11
12
# File 'lib/atomic_assessments_import/questions/ordering.rb', line 10

def question_type
  "orderlist"
end