Class: CanvasQtiToLearnosityConverter::MultipleDropdownsQuestion

Inherits:
TemplateQuestion show all
Defined in:
lib/canvas_qti_to_learnosity_converter/questions/multiple_dropdowns.rb

Instance Method Summary collapse

Methods inherited from TemplateQuestion

#add_learnosity_assets, #extract_template, #extract_template_values, #get_template

Methods inherited from QuizQuestion

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

Constructor Details

This class inherits a constructor from CanvasQtiToLearnosityConverter::QuizQuestion

Instance Method Details

#extract_responsesObject



40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/canvas_qti_to_learnosity_converter/questions/multiple_dropdowns.rb', line 40

def extract_responses()
  template = get_template()

  extract_template_values(template).map do |name|
    result = @xml.css(%{item > presentation >
      response_lid[ident="response_#{name}"] > render_choice mattext}).map do |node|
      extract_mattext(node)
    end

    if result.empty?
      nil
    else
      result
    end
  end.compact
end

#extract_validationObject



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

def extract_validation()
  template = get_template()

  valid_responses = extract_template_values(template).map do |name|
    correct_ident = @xml.css(%{item > resprocessing > respcondition >
      conditionvar > varequal[respident="response_#{name}"]}).first&.content

    @xml.css(%{item > presentation >
      response_lid[ident="response_#{name}"] response_label}).map do |node|
      text = extract_mattext(node.css("mattext").first)
      ident = node.attribute("ident").text
      ident == correct_ident ? text : nil
    end.compact
  end.flatten

  {
    "scoring_type" => "partialMatchV2",
    "rounding" => "none",
    "valid_response" => {
      "value" => valid_responses,
      "score" => extract_points_possible,
    }
  }
end

#to_learnosityObject



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

def to_learnosity
  {
    type: "clozedropdown",
    stimulus: "",
    template: extract_template(),
    validation: extract_validation(),
    possible_responses: extract_responses(),
  }
end