canvas_qti_to_learnosity_converter 2.4.1 → 2.5.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6c158942ecdb0d9e37f54528a9d2411d61827f2fc29eb7bfd9fea84cb41cfd7a
4
- data.tar.gz: f3073a832eee1b03125af16da109b4c4c9c419ac5dc9889435b1c591212d8b87
3
+ metadata.gz: 367e7235a2a58b7fd63af3999e63cb960e34f46fa7f459c08d3608470d55b6c0
4
+ data.tar.gz: 9e33eabe1f9ddecf970ee13fec9e9dc93e5062f658e5122dc90ea3c0a37a8677
5
5
  SHA512:
6
- metadata.gz: de9f66b8dadb1c51c19733af8ca8f1bfd2e7317c215b3249a370da1bed63ce3aea7197b1a401101c3074f9819af77135dcd9605334d13f2227ec913f3c205f59
7
- data.tar.gz: 13bcaf6c6b73156f88929eb384e9d5e571144b505770eabedd1071be4de9c40ebad2befe0e2f19e8b9242014a7788c297fc4901ac5a19401ec2b201ac3def082
6
+ metadata.gz: 62c09c119cab2a055a09f89dbfbb961d1a05f8922475940a86b276d77c16252b9ee56ff8f32aba4a52d9e2e87c2c0c7eeeced67bc0b98d59b11c117a4081589e
7
+ data.tar.gz: 1735c52bf62ae1708e3a1a4eb72af38127eaebd7489e51a206496fa3207e7f350e7bd57e628c4eb8c32f59d4d435246216c61362f683785adfb40b5c67144448
@@ -42,6 +42,12 @@ module CanvasQtiToLearnosityConverter
42
42
  text_only_question: TextOnlyQuestion,
43
43
  numerical_question: NumericalQuestion,
44
44
  calculated_question: CalculatedQuestion,
45
+
46
+ "cc.multiple_choice.v0p1": MultipleChoiceQuestion,
47
+ "cc.multiple_response.v0p1": MultipleAnswersQuestion,
48
+ "cc.fib.v0p1": ShortAnswerQuestion,
49
+ "cc.true_false.v0p1": MultipleChoiceQuestion,
50
+ "cc.essay.v0p1": EssayQuestion,
45
51
  }
46
52
 
47
53
  class CanvasQuestionTypeNotSupportedError < RuntimeError
@@ -93,7 +99,10 @@ module CanvasQtiToLearnosityConverter
93
99
  def self.extract_type(xml)
94
100
  xml.css(%{ item > itemmetadata > qtimetadata >
95
101
  qtimetadatafield > fieldlabel:contains("question_type")})
96
- &.first&.next&.text&.to_sym
102
+ &.first&.next&.text&.to_sym ||
103
+ xml.css(%{ item > itemmetadata > qtimetadata >
104
+ qtimetadatafield > fieldlabel:contains("cc_profile")})
105
+ &.first&.next&.text&.to_sym
97
106
  end
98
107
 
99
108
  def self.convert_item(qti_string:)
@@ -132,7 +141,9 @@ module CanvasQtiToLearnosityConverter
132
141
 
133
142
  quiz.css("item").each.with_index do |item, index|
134
143
  begin
135
- item_title = item.attribute("title").value
144
+ next if item.children.length == 0
145
+
146
+ item_title = item.attribute("title")&.value || ''
136
147
  learnosity_type, quiz_item = convert_item(qti_string: item.to_html)
137
148
 
138
149
  item = {
@@ -179,8 +190,22 @@ module CanvasQtiToLearnosityConverter
179
190
  end
180
191
 
181
192
  def self.imscc_quiz_paths(parsed_manifest)
182
- parsed_manifest.css("resources > resource[type='imsqti_xmlv1p2'] > file").
183
- map { |entry| entry.attribute("href").value }
193
+ resources = parsed_manifest.css("resources > resource[type^='imsqti_xmlv1p2']")
194
+ resources.map do |entry|
195
+ resource_path(parsed_manifest, entry)
196
+ end
197
+ end
198
+
199
+ def self.resource_path(parsed_manifest, entry)
200
+ # Use the Canvas non_cc_assignment qti path when possible. This works for both classic and new quizzes
201
+ entry.css("dependency").each do |dependency|
202
+ ref = dependency.attribute("identifierref").value
203
+ parsed_manifest.css(%{resources > resource[identifier="#{ref}"] > file}).each do |file|
204
+ path = file.attribute("href").value
205
+ return path if path.match?(/^non_cc_assessments/)
206
+ end
207
+ end
208
+ entry.css("file").first&.attribute("href")&.value
184
209
  end
185
210
 
186
211
  def self.convert_imscc_export(path)
@@ -1,3 +1,3 @@
1
1
  module CanvasQtiToLearnosityConverter
2
- VERSION = "2.4.1"
2
+ VERSION = "2.5.0"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: canvas_qti_to_learnosity_converter
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.4.1
4
+ version: 2.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Atomic Jolt
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2023-09-21 00:00:00.000000000 Z
12
+ date: 2024-07-30 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler