canvas_qti_to_learnosity_converter 2.4.0 → 2.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 367e7235a2a58b7fd63af3999e63cb960e34f46fa7f459c08d3608470d55b6c0
|
4
|
+
data.tar.gz: 9e33eabe1f9ddecf970ee13fec9e9dc93e5062f658e5122dc90ea3c0a37a8677
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
@@ -84,7 +90,7 @@ module CanvasQtiToLearnosityConverter
|
|
84
90
|
|
85
91
|
def self.add_files_to_assets(assets, path, text)
|
86
92
|
text.scan(/(%24|\$)IMS-CC-FILEBASE\1\/([^"]+)/) do |_delimiter, asset_path|
|
87
|
-
decoded_path =
|
93
|
+
decoded_path = URI::DEFAULT_PARSER.unescape(asset_path)
|
88
94
|
assets[decoded_path] ||= []
|
89
95
|
assets[decoded_path].push(path)
|
90
96
|
end
|
@@ -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
|
-
|
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
|
183
|
-
|
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)
|
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
|
+
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:
|
12
|
+
date: 2024-07-30 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|
@@ -147,7 +147,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
147
147
|
- !ruby/object:Gem::Version
|
148
148
|
version: '0'
|
149
149
|
requirements: []
|
150
|
-
rubygems_version: 3.
|
150
|
+
rubygems_version: 3.4.10
|
151
151
|
signing_key:
|
152
152
|
specification_version: 4
|
153
153
|
summary: Converts canvas qti to learnosity JSON
|