Class: AtomicAssessmentsImport::CSV::Questions::Question
- Inherits:
-
Object
- Object
- AtomicAssessmentsImport::CSV::Questions::Question
- Defined in:
- lib/atomic_assessments_import/csv/questions/question.rb
Direct Known Subclasses
Instance Attribute Summary collapse
-
#reference ⇒ Object
readonly
Returns the value of attribute reference.
Class Method Summary collapse
Instance Method Summary collapse
-
#initialize(row) ⇒ Question
constructor
A new instance of Question.
- #metadata ⇒ Object
- #points ⇒ Object
- #question_data ⇒ Object
- #question_type ⇒ Object
- #scoring_type ⇒ Object
- #to_learnosity ⇒ Object
Constructor Details
#initialize(row) ⇒ Question
Returns a new instance of Question.
7 8 9 10 11 |
# File 'lib/atomic_assessments_import/csv/questions/question.rb', line 7 def initialize(row) @row = row # @question_reference = Digest::UUID.uuid_v5(Digest::UUID::URL_NAMESPACE, "#{@item_url}/question") @reference = SecureRandom.uuid end |
Instance Attribute Details
#reference ⇒ Object (readonly)
Returns the value of attribute reference.
22 23 24 |
# File 'lib/atomic_assessments_import/csv/questions/question.rb', line 22 def reference @reference end |
Class Method Details
.load(row) ⇒ Object
13 14 15 16 17 18 19 20 |
# File 'lib/atomic_assessments_import/csv/questions/question.rb', line 13 def self.load(row) case row["question type"] when nil, "", /multiple choice/i, /mcq/i MultipleChoice.new(row) else raise NotImplementedError, "Unknown question type" end end |
Instance Method Details
#metadata ⇒ Object
40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/atomic_assessments_import/csv/questions/question.rb', line 40 def { distractor_rationale: @row["distractor rationale"], sample_answer: @row["sample answer"], acknowledgements: @row["acknowledgements"], general_feedback: @row["general feedback"], correct_feedback: @row["correct feedback"], partially_correct_feedback: @row["partially correct feedback"], incorrect_feedback: @row["incorrect feedback"], }.compact end |
#points ⇒ Object
65 66 67 68 69 70 71 72 73 |
# File 'lib/atomic_assessments_import/csv/questions/question.rb', line 65 def points if @row["points"].blank? 1 else Float(@row["points"]) end rescue ArgumentError 1 end |
#question_data ⇒ Object
28 29 30 31 32 33 34 35 36 37 38 |
# File 'lib/atomic_assessments_import/csv/questions/question.rb', line 28 def question_data { stimulus: @row["question text"], type: question_type, metadata: , **{ stimulus_review: @row["stimulus review"], instructor_stimulus: @row["instructor stimulus"], }.compact, } end |
#question_type ⇒ Object
24 25 26 |
# File 'lib/atomic_assessments_import/csv/questions/question.rb', line 24 def question_type raise NotImplementedError end |
#scoring_type ⇒ Object
52 53 54 55 56 57 58 59 60 61 62 63 |
# File 'lib/atomic_assessments_import/csv/questions/question.rb', line 52 def scoring_type case @row["scoring type"] when nil, "", /Partial Match Per Response/i "partialMatchV2" when /Partial Match/i "partialMatch" when /Exact Match/i "exactMatch" else raise NotImplementedError, "Unknown scoring type" end end |
#to_learnosity ⇒ Object
75 76 77 78 79 80 81 82 |
# File 'lib/atomic_assessments_import/csv/questions/question.rb', line 75 def to_learnosity { type: question_type, widget_type: "response", reference: @reference, data: question_data, } end |