class Senkyoshi::Calculated
Attributes
dataset_definitions[R]
var_sets[R]
Public Class Methods
new()
click to toggle source
Calls superclass method
Senkyoshi::Question::new
# File lib/senkyoshi/models/questions/calculated.rb, line 22 def initialize @dataset_definitions = [] @var_sets = [] @correct_answer_length = 0 @correct_answer_format = 0 @tolerance = 0 super end
Public Instance Methods
_parse_var_sets(parent_node)
click to toggle source
# File lib/senkyoshi/models/questions/calculated.rb, line 75 def _parse_var_sets(parent_node) parent_node.search("var_set").map do |var_set| vars = var_set.search("var").each_with_object({}) do |var, hash| hash[var.attributes["name"].text] = var.text end { ident: var_set.attributes["ident"].text, answer: var_set.at("answer").text, vars: vars, } end end
_parse_vars(parent_node)
click to toggle source
# File lib/senkyoshi/models/questions/calculated.rb, line 61 def _parse_vars(parent_node) parent_node.search("var").map do |var| scale = var.attributes["scale"] min = var.at("min").text max = var.at("max").text options = ":#{min}:#{max}:#{scale}" { name: var.attributes["name"].value, options: options, } end end
canvas_conversion(*)
click to toggle source
Calls superclass method
Senkyoshi::Question#canvas_conversion
# File lib/senkyoshi/models/questions/calculated.rb, line 31 def canvas_conversion(*) @question.dataset_definitions = @dataset_definitions @question.var_sets = @var_sets @question.correct_answer_length = @correct_answer_length @question.correct_answer_format = @correct_answer_format @question.tolerance = @tolerance super end
iterate_xml(data)
click to toggle source
Calls superclass method
Senkyoshi::Question#iterate_xml
# File lib/senkyoshi/models/questions/calculated.rb, line 40 def iterate_xml(data) super calculated_node = data.at("itemproc_extension > calculated") math_ml = CGI.unescapeHTML(calculated_node.at("formula").text) formula = Nokogiri::HTML(math_ml).text answer = Answer.new(formula) @answers.push(answer) @tolerance = calculated_node.at("answer_tolerance").text # canvas_cc only uses the correct_answer_length if the # correct_answer_format is 1. It is not known what 1 represents. @correct_answer_format = 1 @correct_answer_length = calculated_node.at("answer_scale").text @dataset_definitions = _parse_vars(calculated_node.at("vars")) @var_sets = _parse_var_sets(calculated_node.at("var_sets")) self end