class CommonCartridge::Parsers::Parser

Public Class Methods

new(zipfile) click to toggle source
# File lib/common_cartridge/parsers/parser.rb, line 27
def initialize(zipfile)
  @zipfile = zipfile
  @package = Package.new
end
use_file(zipfile, path) { |get_input_stream.read| ... } click to toggle source
# File lib/common_cartridge/parsers/parser.rb, line 18
def self.use_file(zipfile, path)
  Zip::File.open(File.join(CommonCartridge.config.import_directory, zipfile)) do |file|
    f = file.glob(path).first
    unless f.nil?
      yield f.get_input_stream.read
    end
  end
end

Public Instance Methods

parse() click to toggle source
# File lib/common_cartridge/parsers/parser.rb, line 32
def parse
  Parser.use_file(@zipfile, 'imsmanifest.xml') do |xml|
    @package.manifest = ManifestDocument.parse(xml).manifest
  end

  parse_content!
  @package.outcomes = parse_outcomes
  parse_questions!
  parse_module_items!
  @package
end

Private Instance Methods

parse_content!() click to toggle source
# File lib/common_cartridge/parsers/parser.rb, line 57
def parse_content!
  @package.manifest.resources.map do |resource|
    parse_resource! resource
  end
end
parse_module_items!() click to toggle source
# File lib/common_cartridge/parsers/parser.rb, line 45
def parse_module_items!
  @package.modules.each do |mod|
    item_parser = Parsers::Items.new(@zipfile, mod, @package.manifest.resources)
    item_parser.parse!
  end
end
parse_outcomes() click to toggle source
# File lib/common_cartridge/parsers/parser.rb, line 52
def parse_outcomes
  outcomes_parser = Parsers::Outcomes.new(@zipfile)
  outcomes_parser.parse!
end
parse_questions!() click to toggle source
# File lib/common_cartridge/parsers/parser.rb, line 73
def parse_questions!
  @package.quizzes.each do |quiz|
    parser = Parsers::Questions.new(@zipfile, quiz)
    parser.parse!
  end
end
parse_resource!(resource) click to toggle source
# File lib/common_cartridge/parsers/parser.rb, line 63
def parse_resource! resource
  file_parser = Parsers::Files.new(@zipfile, resource)
  file_parser.parse!(@package)
  dependency_parser = Parsers::Dependencies.new(@zipfile, resource)
  dependency_parser.parse!(@package)
rescue RuntimeError => e
  Rails.logger.error "CommonCartridge parse error: #{e.to_s}"
  Rails.logger.error e.backtrace
end