class Moodle2CC::CanvasCC::CalculatedQuestionWriter
Private Class Methods
write_additional_nodes(item_node, question)
click to toggle source
# File lib/moodle2cc/canvas_cc/calculated_question_writer.rb, line 30 def self.write_additional_nodes(item_node, question) item_node.itemproc_extension do |extension_node| extension_node.calculated do |calculated_node| calculated_node.answer_tolerance question.tolerance formula_decimal_places = question.correct_answer_format.to_i == 1 ? question.correct_answer_length : 0 calculated_node.formulas(:decimal_places => formula_decimal_places) do |formulas_node| formulas = question.answers.map { |a| a.answer_text.gsub(/[\{\}\s]/, '') } formulas.each do |formula| formulas_node.formula formula end end calculated_node.vars do |vars_node| vars = question.dataset_definitions.map do |ds_def| name = ds_def[:name] type, min, max, scale = ds_def[:options].split(':') {:name => name, :min => min, :max => max, :scale => scale} end vars.each do |var| vars_node.var(:name => var[:name], :scale => var[:scale]) do |var_node| var_node.min var[:min] var_node.max var[:max] end end end calculated_node.var_sets do |var_sets_node| question.var_sets.each do |var_set| ident = var_set[:vars].sort.map { |k,v| v.to_s.split('.').join }.flatten.join var_sets_node.var_set(:ident => ident) do |var_set_node| var_set[:vars].each do |k, v| var_set_node.var(v, :name => k) end end end end end end end
write_response_conditions(processing_node, question)
click to toggle source
# File lib/moodle2cc/canvas_cc/calculated_question_writer.rb, line 15 def self.write_response_conditions(processing_node, question) processing_node.respcondition(:title => 'correct') do |condition| condition.conditionvar do |var_node| var_node.other end condition.setvar('100', :varname => 'SCORE', :action => 'Set') end processing_node.respcondition(:title => 'incorrect') do |condition| condition.conditionvar do |var_node| var_node.other end condition.setvar('0', :varname => 'SCORE', :action => 'Set') end end
write_responses(presentation_node, question)
click to toggle source
# File lib/moodle2cc/canvas_cc/calculated_question_writer.rb, line 7 def self.write_responses(presentation_node, question) presentation_node.response_str(:rcardinality => 'Single', :ident => 'response1') do |response_node| response_node.render_fib(:fibtype => 'Decimal') do |render_node| render_node.response_label(:ident => 'answer1') end end end