Class: Qti::V1::Models::Interactions::BaseInteraction
- Inherits:
-
Base
show all
- Defined in:
- lib/qti/v1/models/interactions/base_interaction.rb
Instance Attribute Summary collapse
Attributes inherited from Models::Base
#doc, #manifest, #package_root, #path, #resource
Class Method Summary
collapse
Instance Method Summary
collapse
Methods inherited from Base
#qti_version, #return_inner_content!
#css_with_single_check, from_path!, #parse_html, #parse_xml, #preprocess_xml_doc, #raise_unsupported, #remap_href_path, #sanitize_content!, #xpath_with_single_check
Constructor Details
Returns a new instance of BaseInteraction.
29
30
31
32
|
# File 'lib/qti/v1/models/interactions/base_interaction.rb', line 29
def initialize(node, parent)
@node = node
copy_paths_from_item(parent)
end
|
Instance Attribute Details
#node ⇒ Object
Returns the value of attribute node.
6
7
8
|
# File 'lib/qti/v1/models/interactions/base_interaction.rb', line 6
def node
@node
end
|
Class Method Details
.canvas_multiple_fib?(node) ⇒ Boolean
12
13
14
15
16
|
# File 'lib/qti/v1/models/interactions/base_interaction.rb', line 12
def self.canvas_multiple_fib?(node)
matches = node.xpath('.//xmlns:response_lid')
return false if matches.count < 1
question_type(node) == 'fill_in_multiple_blanks_question'
end
|
.matches(_node, _parent) ⇒ Object
8
9
10
|
# File 'lib/qti/v1/models/interactions/base_interaction.rb', line 8
def self.matches(_node, _parent)
false
end
|
.maybe_question_type(node, qtype) ⇒ Object
24
25
26
27
|
# File 'lib/qti/v1/models/interactions/base_interaction.rb', line 24
def self.maybe_question_type(node, qtype)
question_type = self.question_type(node)
!question_type || question_type == qtype
end
|
.question_type(node) ⇒ Object
18
19
20
21
22
|
# File 'lib/qti/v1/models/interactions/base_interaction.rb', line 18
def self.question_type(node)
path = './/xmlns:qtimetadatafield/xmlns:fieldlabel' \
'[text()="question_type"]/../xmlns:fieldentry'
node.at_xpath(path)&.text
end
|
Instance Method Details
#answer_feedback ⇒ Object
54
55
56
57
58
59
60
61
62
|
# File 'lib/qti/v1/models/interactions/base_interaction.rb', line 54
def answer_feedback
path = './/xmlns:respcondition//xmlns:displayfeedback/../' \
'xmlns:conditionvar/xmlns:varequal[@respident]/../../' \
'xmlns:displayfeedback/..'
answers = node.xpath(path).map do |entry|
answer_feedback_entry(entry)
end
answers unless answers.empty?
end
|
#canvas_item_feedback ⇒ Object
46
47
48
49
50
51
52
|
# File 'lib/qti/v1/models/interactions/base_interaction.rb', line 46
def canvas_item_feedback
{
neutral: get_feedback('general_fb')&.text,
correct: get_feedback('correct_fb')&.text,
incorrect: get_feedback('general_incorrect_fb')&.text
}.compact
end
|
#rcardinality ⇒ Object
42
43
44
|
# File 'lib/qti/v1/models/interactions/base_interaction.rb', line 42
def rcardinality
@rcardinality ||= @node.at_xpath('.//xmlns:response_lid/@rcardinality')&.value || 'Single'
end
|
#scoring_data_structs ⇒ Object
38
39
40
|
# File 'lib/qti/v1/models/interactions/base_interaction.rb', line 38
def scoring_data_structs
raise NotImplementedError
end
|
#shuffled? ⇒ Boolean
34
35
36
|
# File 'lib/qti/v1/models/interactions/base_interaction.rb', line 34
def shuffled?
@node.at_xpath('.//xmlns:render_choice/@shuffle')&.value.try(:downcase) == 'yes'
end
|