qti 0.1.0 → 0.1.2
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
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d28b9b4b803434ea56ecd453295db6a28b783b69
|
4
|
+
data.tar.gz: 6ba9bef6b2282a140bc6093d9cf2f3f6f3f78f35
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7c4491ca81bc84b3e224b1965f5e5fd0e22e27335c85260ed1756a10fbedacf15db94c5a53af2bc35f5a75fee637a71485ff2460700357891d0324f9084c94fb
|
7
|
+
data.tar.gz: a5ee171c6fe09d519be06d6dfdf3136e5ff364705c489bded21ac64180598ce2d5f4f4cd91538a4098f78e92a50ea12119f095baec44bcafeda987efad252b57
|
data/lib/qti.rb
CHANGED
@@ -53,7 +53,6 @@ require 'qti/v1/models/base'
|
|
53
53
|
require 'qti/v1/models/assessment'
|
54
54
|
require 'qti/v1/models/assessment_item'
|
55
55
|
require 'qti/v1/models/choices/logical_identifier_choice'
|
56
|
-
require 'qti/v1/models/interactions/logical_identifier_interaction'
|
57
56
|
|
58
57
|
require 'qti/v2/models/base'
|
59
58
|
require 'qti/v2/models/choices/simple_choice'
|
@@ -1,4 +1,5 @@
|
|
1
|
-
require 'qti/v1/models/
|
1
|
+
require 'qti/v1/models/base'
|
2
|
+
require 'qti/v1/models/interactions'
|
2
3
|
|
3
4
|
module Qti
|
4
5
|
module V1
|
@@ -37,7 +38,9 @@ module Qti
|
|
37
38
|
end
|
38
39
|
|
39
40
|
def interaction_model
|
40
|
-
@interaction_model ||=
|
41
|
+
@interaction_model ||= begin
|
42
|
+
V1::Models::Interactions.interaction_model(@doc)
|
43
|
+
end
|
41
44
|
end
|
42
45
|
|
43
46
|
def scoring_data_structs
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# Populate the subclasses
|
2
|
+
Dir["#{__dir__}/interactions/*.rb"].each { |f| load f }
|
3
|
+
|
4
|
+
module Qti
|
5
|
+
module V1
|
6
|
+
module Models
|
7
|
+
module Interactions
|
8
|
+
# This one finds the correct parsing model based on the provided xml node
|
9
|
+
def self.interaction_model(node)
|
10
|
+
subclasses = constants.map { |c| const_get(c) }
|
11
|
+
|
12
|
+
# Check for matches
|
13
|
+
matches = subclasses.each_with_object([]) do |interaction_class, result|
|
14
|
+
match = interaction_class.matches(node)
|
15
|
+
result << match if match
|
16
|
+
end
|
17
|
+
|
18
|
+
raise V1::UnsupportedSchema if matches.size > 1
|
19
|
+
|
20
|
+
matches.first
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -6,6 +6,16 @@ module Qti
|
|
6
6
|
module Models
|
7
7
|
module Interactions
|
8
8
|
class LogicalIdentifierInteraction < Qti::V1::Models::Base
|
9
|
+
NODE_NAME = 'response_lid'.freeze
|
10
|
+
# This will know if a class matches
|
11
|
+
def self.matches(node)
|
12
|
+
matches = node.children.children.select { |n| n.name == NODE_NAME }
|
13
|
+
return false if matches.empty?
|
14
|
+
|
15
|
+
raise Qti::UnsupportedSchema if matches.size > 1
|
16
|
+
new(matches.first)
|
17
|
+
end
|
18
|
+
|
9
19
|
def initialize(node)
|
10
20
|
@node = node
|
11
21
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: qti
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Hannah Bottalla
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-01-
|
11
|
+
date: 2017-01-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -125,6 +125,7 @@ files:
|
|
125
125
|
- lib/qti/v1/models/assessment_item.rb
|
126
126
|
- lib/qti/v1/models/base.rb
|
127
127
|
- lib/qti/v1/models/choices/logical_identifier_choice.rb
|
128
|
+
- lib/qti/v1/models/interactions.rb
|
128
129
|
- lib/qti/v1/models/interactions/logical_identifier_interaction.rb
|
129
130
|
- lib/qti/v1/models/interactions/string_interaction.rb
|
130
131
|
- lib/qti/v2/models/assessment_item.rb
|