class Qti::V1::Models::Assessment

Constants

GROUP_ID

Public Instance Methods

assessment_items() click to toggle source
# File lib/qti/v1/models/assessment.rb, line 13
def assessment_items
  @doc.xpath("//*[self::#{GROUP_ID} or self::xmlns:item[not(ancestor::#{GROUP_ID})]]")
end
create_assessment_item(assessment_item) click to toggle source
# File lib/qti/v1/models/assessment.rb, line 17
def create_assessment_item(assessment_item)
  return nil if sub_section?(assessment_item)
  item = Qti::V1::Models::AssessmentItem.new(assessment_item, @package_root, self)
  item.manifest = manifest
  item
end
create_question_group(group_ref) click to toggle source
# File lib/qti/v1/models/assessment.rb, line 33
def create_question_group(group_ref)
  return nil unless question_group?(group_ref)
  Qti::V1::Models::QuestionGroup.new(group_ref)
end
create_stimulus(stimulus_ref) click to toggle source
# File lib/qti/v1/models/assessment.rb, line 28
def create_stimulus(stimulus_ref)
  return nil unless stimulus?(stimulus_ref)
  Qti::V1::Models::StimulusItem.new(stimulus_ref)
end
stimulus_ref(assessment_item_ref) click to toggle source
# File lib/qti/v1/models/assessment.rb, line 24
def stimulus_ref(assessment_item_ref)
  assessment_item_ref
end
title() click to toggle source
# File lib/qti/v1/models/assessment.rb, line 9
def title
  @title ||= xpath_with_single_check('.//xmlns:assessment/@title')&.content || File.basename(@path, '.xml')
end

Private Instance Methods

question_group?(ref_node) click to toggle source
# File lib/qti/v1/models/assessment.rb, line 53
def question_group?(ref_node)
  ref_node.xpath("self::#{GROUP_ID}").present?
end
stimulus?(ref_node) click to toggle source
# File lib/qti/v1/models/assessment.rb, line 44
def stimulus?(ref_node)
  meta_node = ref_node.at_xpath(
    './/xmlns:qtimetadatafield[./xmlns:fieldlabel/text()="question_type"]'
  )
  return false unless meta_node.present?
  type_node = meta_node.at_xpath('.//xmlns:fieldentry')
  type_node&.text() == 'text_only_question'
end
sub_section?(ref_node) click to toggle source
# File lib/qti/v1/models/assessment.rb, line 40
def sub_section?(ref_node)
  stimulus?(ref_node) || question_group?(ref_node)
end