Module: Qti::V1::Models::Interactions

Defined in:
lib/qti/v1/models/interactions.rb,
lib/qti/v1/models/interactions/base_interaction.rb,
lib/qti/v1/models/interactions/match_interaction.rb,
lib/qti/v1/models/interactions/choice_interaction.rb,
lib/qti/v1/models/interactions/string_interaction.rb,
lib/qti/v1/models/interactions/upload_interaction.rb,
lib/qti/v1/models/interactions/formula_interaction.rb,
lib/qti/v1/models/interactions/numeric_interaction.rb,
lib/qti/v1/models/interactions/ordering_interaction.rb,
lib/qti/v1/models/interactions/fill_blank_interaction.rb,
lib/qti/v1/models/interactions/canvas_multiple_dropdown.rb,
lib/qti/v1/models/interactions/base_fill_blank_interaction.rb

Defined Under Namespace

Classes: BaseFillBlankInteraction, BaseInteraction, CanvasMultipleDropdownInteraction, ChoiceInteraction, FillBlankInteraction, FormulaInteraction, MatchInteraction, NumericInteraction, OrderingInteraction, StringInteraction, UploadInteraction

Class Method Summary collapse

Class Method Details

.interaction_model(node, parent) ⇒ Object

This one finds the correct parsing model based on the provided xml node

Raises:



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/qti/v1/models/interactions.rb', line 10

def self.interaction_model(node, parent)
  ordered_classes = [CanvasMultipleDropdownInteraction, FormulaInteraction, NumericInteraction]
  ordered_classes.each do |interaction_class|
    match = interaction_class.matches(node, parent)
    return match if match
  end

  subclasses = constants.map { |c| const_get(c) } - ordered_classes

  matches = subclasses.each_with_object([]) do |interaction_class, result|
    match = interaction_class.matches(node, parent)
    result << match if match
  end
  raise UnsupportedSchema if matches.size != 1
  matches.first
end