class Qti::V2::Models::Interactions::CategorizationInteraction
Public Class Methods
matches(node, parent)
click to toggle source
# File lib/qti/v2/models/interactions/categorization_interaction.rb, line 8 def self.matches(node, parent) if use_match_interaction_implementation?(node) new(node, parent, MatchItemTagProcessors::MatchInteractionTagProcessor) else false end end
use_match_interaction_implementation?(node)
click to toggle source
# File lib/qti/v2/models/interactions/categorization_interaction.rb, line 16 def self.use_match_interaction_implementation?(node) MatchItemTagProcessors::MatchInteractionTagProcessor.match_interaction_tag?(node) && MatchItemTagProcessors::MatchInteractionTagProcessor.number_of_questions_per_answer(node) .any? { |n| n != 1 } end
Public Instance Methods
scoring_data_structs()
click to toggle source
# File lib/qti/v2/models/interactions/categorization_interaction.rb, line 22 def scoring_data_structs questions_categories_choices_hash.map do |category_choice, questions_choices| ScoringData.new(category_choice.text, 'directedPair', id: node_identifier(category_choice), questions_ids: questions_choices.map { |q| node_identifier(q) }) end end
Private Instance Methods
categories_ids()
click to toggle source
# File lib/qti/v2/models/interactions/categorization_interaction.rb, line 54 def categories_ids @_categories_ids ||= implementation.question_response_pairs.map { |_, category_id| category_id }.uniq end
category_choices()
click to toggle source
# File lib/qti/v2/models/interactions/categorization_interaction.rb, line 46 def category_choices @_category_choices ||= implementation.choices.select { |c| categories_ids.include? node_identifier(c) } end
node_identifier(node)
click to toggle source
# File lib/qti/v2/models/interactions/categorization_interaction.rb, line 62 def node_identifier(node) node.attributes['identifier'].value end
question_choices()
click to toggle source
# File lib/qti/v2/models/interactions/categorization_interaction.rb, line 50 def question_choices @_question_choices ||= implementation.choices.select { |c| questions_ids.include? node_identifier(c) } end
questions_categories_choices_hash()
click to toggle source
# File lib/qti/v2/models/interactions/categorization_interaction.rb, line 32 def questions_categories_choices_hash category_choices.each_with_object({}) do |category_choice, hash| hash[category_choice] = questions_for_category_choice(category_choice) end end
questions_for_category_choice(choice)
click to toggle source
# File lib/qti/v2/models/interactions/categorization_interaction.rb, line 38 def questions_for_category_choice(choice) choice_identifier = node_identifier(choice) category_questions_ids = implementation.question_response_pairs .select { |_, category_id| category_id == choice_identifier } .map { |question_id, _| question_id } question_choices.select { |q| category_questions_ids.include? node_identifier(q) } end
questions_ids()
click to toggle source
# File lib/qti/v2/models/interactions/categorization_interaction.rb, line 58 def questions_ids @_questions_ids ||= implementation.question_response_pairs.map { |question_id, _| question_id }.uniq end