class CanvasCc::CanvasCC::AssignmentWriter

Public Class Methods

new(work_dir, *assignments) click to toggle source
# File lib/canvas_cc/canvas_cc/assignment_writer.rb, line 5
def initialize(work_dir, *assignments)
  @work_dir = work_dir
  @assignments = assignments
end

Public Instance Methods

write() click to toggle source
# File lib/canvas_cc/canvas_cc/assignment_writer.rb, line 10
def write
  @assignments.each do |assignment|
    assignment_dir = File.join(@work_dir, assignment.assignment_resource.identifier)
    Dir.mkdir(assignment_dir)
    write_html(assignment_dir, assignment)
    write_settings(assignment_dir, assignment)
  end
end

Private Instance Methods

write_html(assignment_dir, assignment) click to toggle source
# File lib/canvas_cc/canvas_cc/assignment_writer.rb, line 35
def write_html(assignment_dir, assignment)
  builder = Nokogiri::HTML::Builder.new(:encoding => 'UTF-8') do |doc|
    doc.html { |html|
      html.head { |head|
        head.meta('http-equiv' => 'Content-Type', content: 'text/html; charset=utf-8')
        head.title "Assignment: #{assignment.title}"
      }
      html.body { |body|
        body << Nokogiri::HTML::fragment(assignment.body)
      }
    }
  end
  File.open(File.join(@work_dir, assignment.assignment_resource.href), 'w') { |f| f.write(builder.to_html) }
end
write_settings(assignment_dir, assignment) click to toggle source
# File lib/canvas_cc/canvas_cc/assignment_writer.rb, line 21
def write_settings(assignment_dir, assignment)
  xml = Nokogiri::XML::Builder.new(encoding: 'UTF-8') do |xml|
    xml.assignment('identifier' => assignment.assignment_resource.identifier,
                   'xmlns' => 'http://canvas.instructure.com/xsd/cccv1p0',
                   'xmlns:xsi' => 'http://www.w3.org/2001/XMLSchema-instance',
                   'xsi:schemaLocation' => 'http://canvas.instructure.com/xsd/cccv1p0 http://canvas.instructure.com/xsd/cccv1p0.xsd'
    ) { |xml|
      assignment_xml(assignment, xml)
    }
  end.to_xml
  File.open(File.join(assignment_dir, CanvasCc::CanvasCC::Models::Assignment::ASSIGNMENT_SETTINGS_FILE), 'w') { |f| f.write(xml) }
end