Module: Qti::Models::ResourceGroup

Included in:
Manifest, V2::Models::NonAssessmentTest
Defined in:
lib/qti/models/resource.rb

Constant Summary collapse

RESOURCE_QTI_TYPES =
%w[imsqti_test_xmlv2p1
imsqti_test_xmlv2p2
imsqti_xmlv1p2].freeze
ASSESSMENT_CLASSES =
{
  'imsqti_xmlv1p2' => Qti::V1::Models::Assessment,
  'imsqti_test_xmlv2p1' => Qti::V2::Models::AssessmentTest,
  'imsqti_test_xmlv2p2' => Qti::V2::Models::AssessmentTest
}.freeze
EMBEDDED_QTI_TYPES =
%w[imsqti_item_xmlv2p1
imsqti_item_xmlv2p2].freeze
EMBEDDED_NON_ASSESSMENT_ID =
'@embedded_non_assessment'.freeze

Instance Method Summary collapse

Instance Method Details

#assessment_identifiers(embedded_as_assessment = true) ⇒ Object



94
95
96
97
98
# File 'lib/qti/models/resource.rb', line 94

def assessment_identifiers(embedded_as_assessment = true)
  id_list = identifier_list('/assessment')
  return id_list + [EMBEDDED_NON_ASSESSMENT_ID] if embedded_as_assessment && embedded_non_assessment?
  id_list
end

#asset_resource_for(rsc) ⇒ Object



70
71
72
# File 'lib/qti/models/resource.rb', line 70

def asset_resource_for(rsc)
  asset_resource_for_canvas(rsc) || asset_resource_for_ims(rsc)
end

#asset_resource_for_canvas(rsc) ⇒ Object



74
75
76
# File 'lib/qti/models/resource.rb', line 74

def asset_resource_for_canvas(rsc)
  rsc.canvas_extra_file('.xml.qti')
end

#asset_resource_for_ims(rsc) ⇒ Object



78
79
80
# File 'lib/qti/models/resource.rb', line 78

def asset_resource_for_ims(rsc)
  rsc.href
end

#identifier_list(rsc_type) ⇒ Object



82
83
84
85
86
# File 'lib/qti/models/resource.rb', line 82

def identifier_list(rsc_type)
  RESOURCE_QTI_TYPES.map do |v|
    xmlns_resource_list("[#{rtype_predicate(v, rsc_type)}]").map { |r| r[:identifier] }
  end.flatten
end

#item_resources_v2Object



104
105
106
107
108
# File 'lib/qti/models/resource.rb', line 104

def item_resources_v2
  nodes = resources('[@type="imsqti_item_xmlv2p2"]')
  return nodes if nodes.count >= 1
  resources('[@type="imsqti_item_xmlv2p1"]')
end

#question_bank_identifiersObject



100
101
102
# File 'lib/qti/models/resource.rb', line 100

def question_bank_identifiers
  identifier_list('/question-bank')
end

#resource_for(identifier, qti_type = nil) ⇒ Object



88
89
90
91
92
# File 'lib/qti/models/resource.rb', line 88

def resource_for(identifier, qti_type = nil)
  qti_type = " and starts-with(@type, '#{qti_type}')" if qti_type
  base_xpath = "[@identifier='#{identifier}'#{qti_type}]"
  Resource.new(resource_node(base_xpath), self)
end

#resource_node(type) ⇒ Object



110
111
112
# File 'lib/qti/models/resource.rb', line 110

def resource_node(type)
  xpath_with_single_check(xpath_resource(type))
end

#resources(type = '') ⇒ Object



66
67
68
# File 'lib/qti/models/resource.rb', line 66

def resources(type = '')
  @doc.xpath(xpath_resource(type))
end