class CanvasCc::CanvasCC::QuestionBankWriter
Public Class Methods
new(work_dir, *question_banks)
click to toggle source
# File lib/canvas_cc/canvas_cc/question_bank_writer.rb, line 4 def initialize(work_dir, *question_banks) @work_dir = work_dir @question_banks = question_banks end
Public Instance Methods
write()
click to toggle source
# File lib/canvas_cc/canvas_cc/question_bank_writer.rb, line 9 def write @question_banks.each do |bank| write_bank(bank) end end
Private Instance Methods
write_bank(bank)
click to toggle source
# File lib/canvas_cc/canvas_cc/question_bank_writer.rb, line 17 def write_bank(bank) bank_resource = bank.question_bank_resource xml = Nokogiri::XML::Builder.new(encoding: 'UTF-8') do |xml| xml.questestinterop("xmlns" => "http://www.imsglobal.org/xsd/ims_qtiasiv1p2", "xmlns:xsi"=>"http://www.w3.org/2001/XMLSchema-instance", "xsi:schemaLocation"=> "http://www.imsglobal.org/xsd/ims_qtiasiv1p2 http://www.imsglobal.org/xsd/ims_qtiasiv1p2p1.xsd" ) { |xml| xml.objectbank(:ident => bank_resource.identifier) { |xml| xml.qtimetadata { |xml| xml.qtimetadatafield { |xml| xml.fieldlabel 'bank_title' xml.fieldentry bank.title } } bank.questions.each do |question| CanvasCc::CanvasCC::QuestionWriter.write_question(xml, question) end } } end.to_xml file_path = File.join(@work_dir, bank_resource.href) FileUtils.mkdir_p(File.dirname(file_path)) unless File.exists?(File.dirname(file_path)) File.open(file_path, 'w') { |f| f.write(xml) } end