Class: CanvasQtiToLearnosityConverter::CategorizationQuestion

Inherits:
QuizQuestion
  • Object
show all
Defined in:
lib/canvas_qti_to_learnosity_converter/questions/categorization.rb

Instance Method Summary collapse

Methods inherited from QuizQuestion

#convert, #dynamic_content_data, #extract_feedback, #extract_mattext, #extract_points_possible, #extract_stimulus, for, #initialize, #make_identifier, #process_assets!

Constructor Details

This class inherits a constructor from CanvasQtiToLearnosityConverter::QuizQuestion

Instance Method Details

#add_learnosity_assets(assets, path, learnosity) ⇒ Object



53
54
55
56
# File 'lib/canvas_qti_to_learnosity_converter/questions/categorization.rb', line 53

def add_learnosity_assets(assets, path, learnosity)
  process_assets!(assets, path, learnosity[:stimulus])
  learnosity
end

#extract_possible_responsesObject



15
16
17
# File 'lib/canvas_qti_to_learnosity_converter/questions/categorization.rb', line 15

def extract_possible_responses()
  item_index_map().keys.map { |ident| item_text_map()[ident] }
end

#extract_ui_styleObject



19
20
21
22
23
24
25
# File 'lib/canvas_qti_to_learnosity_converter/questions/categorization.rb', line 19

def extract_ui_style()
  categories = @xml.css("item > presentation > response_lid")
  {
    "column_count" => categories.length,
    "column_titles" => categories.map { |c| c.css("> material > mattext").first&.text || "" },
  }
end

#extract_validationObject



27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/canvas_qti_to_learnosity_converter/questions/categorization.rb', line 27

def extract_validation()
  cat_idx = category_index_map()
  item_idx = item_index_map()

  column_values = Array.new(cat_idx.length) { [] }

  @xml.css("item > resprocessing > respcondition > conditionvar > varequal").each do |varequal|
    category_ident = varequal.attribute("respident")&.value
    item_ident = varequal.text.strip

    col = cat_idx[category_ident]
    row = item_idx[item_ident]
    next if col.nil? || row.nil?

    column_values[col] << row
  end

  {
    "scoring_type" => "exactMatch",
    "valid_response" => {
      "score" => extract_points_possible,
      "value" => column_values,
    }
  }
end

#to_learnosityObject



5
6
7
8
9
10
11
12
13
# File 'lib/canvas_qti_to_learnosity_converter/questions/categorization.rb', line 5

def to_learnosity
  {
    type: "classification",
    stimulus: extract_stimulus(),
    possible_responses: extract_possible_responses(),
    ui_style: extract_ui_style(),
    validation: extract_validation(),
  }
end