Class: CanvasQtiToLearnosityConverter::OrderingQuestion

Inherits:
QuizQuestion
  • Object
show all
Defined in:
lib/canvas_qti_to_learnosity_converter/questions/ordering.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



44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
# File 'lib/canvas_qti_to_learnosity_converter/questions/ordering.rb', line 44

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

  learnosity[:list].each.with_index do |item, index|
    process_assets!(
      assets,
      path,
      item
    )
  end

  learnosity
end

#extract_itemsObject



16
17
18
19
20
# File 'lib/canvas_qti_to_learnosity_converter/questions/ordering.rb', line 16

def extract_items()
  @xml.css("item > presentation > response_lid > render_extension > ims_render_object > flow_label > response_label").map do |node|
    extract_mattext(node.css("material > mattext").first)
  end
end

#extract_validationObject



22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/canvas_qti_to_learnosity_converter/questions/ordering.rb', line 22

def extract_validation()
  item_idents = @xml.css("item > presentation > response_lid > render_extension > ims_render_object > flow_label > response_label").map do |node|
    node.attribute("ident")&.value
  end.compact

  ordered_idents = @xml.css("item > resprocessing > respcondition[continue='No'] > conditionvar varequal").map(&:content)
    .map(&:strip)
    .reject(&:empty?)

  # Map each ordered ident to its index in the original list
  ordered_indices = ordered_idents.map do |ident|
    item_idents.index(ident)
  end.compact

  {
    "valid_response" => {
      "score" => extract_points_possible,
      "value" => ordered_indices
    }
  }
end

#to_learnosityObject



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

def to_learnosity
  shuffle = @xml.css("ims_render_object").first&.attribute("shuffle")&.value
  {
    type: "orderlist",
    stimulus: extract_stimulus(),
    list: extract_items(),
    shuffle_options: shuffle == "Yes",
    validation: extract_validation(),
  }
end