class Qti::V1::Models::Interactions::FormulaInteraction
Public Class Methods
matches(node, parent)
click to toggle source
This will know if a class matches
# File lib/qti/v1/models/interactions/formula_interaction.rb, line 8 def self.matches(node, parent) return false unless node.at_xpath('.//xmlns:calculated').present? new(node, parent) end
Public Instance Methods
answer_tolerance()
click to toggle source
# File lib/qti/v1/models/interactions/formula_interaction.rb, line 39 def answer_tolerance @answer_tolerance ||= @node.at_xpath('.//xmlns:answer_tolerance').text end
formula_decimal_places()
click to toggle source
# File lib/qti/v1/models/interactions/formula_interaction.rb, line 48 def formula_decimal_places @node.at_xpath('.//xmlns:formulas/@decimal_places')&.value end
formulas()
click to toggle source
# File lib/qti/v1/models/interactions/formula_interaction.rb, line 52 def formulas node.xpath('.//xmlns:formula').map(&:text) end
margin_of_error()
click to toggle source
# File lib/qti/v1/models/interactions/formula_interaction.rb, line 43 def margin_of_error return { margin: answer_tolerance[0..-2], margin_type: 'percent' } if answer_tolerance.ends_with? '%' { margin: answer_tolerance, margin_type: 'absolute' } end
scoring_data_structs()
click to toggle source
# File lib/qti/v1/models/interactions/formula_interaction.rb, line 13 def scoring_data_structs solutions.map do |answer| ScoringData.new( answer[:output], rcardinality, id: answer[:id] ) end end
solutions()
click to toggle source
# File lib/qti/v1/models/interactions/formula_interaction.rb, line 23 def solutions node.xpath('.//xmlns:var_set').map do |anode| { inputs: vars_at_node(anode), output: anode.at_xpath('.//xmlns:answer')&.text&.to_f } end end
variables()
click to toggle source
# File lib/qti/v1/models/interactions/formula_interaction.rb, line 32 def variables varlist = @node.at_xpath('.//xmlns:vars') varlist.xpath('.//xmlns:var').map do |vnode| variable_def(vnode) end end
Private Instance Methods
variable_def(var_node)
click to toggle source
# File lib/qti/v1/models/interactions/formula_interaction.rb, line 67 def variable_def(var_node) { name: var_node.attributes['name']&.value, min: var_node.at_xpath('.//xmlns:min').text&.to_f, max: var_node.at_xpath('.//xmlns:max').text&.to_f, precision: var_node.attributes['scale']&.value&.to_i } end
vars_at_node(parent_node)
click to toggle source
# File lib/qti/v1/models/interactions/formula_interaction.rb, line 58 def vars_at_node(parent_node) parent_node.xpath('.//xmlns:var').map do |vnode| { name: vnode.attributes['name']&.value, value: vnode.text&.to_f } end end