Learn more  » Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Bower components Debian packages RPM packages NuGet packages

vistahigherlearning / common_cartridge   ruby

Repository URL to install this package:

Version: 1.0.1 

/ lib / common_cartridge / parsers / questions.rb

module CommonCartridge
  module Parsers
    class Questions
      def initialize(zipfile, quiz)
        @zipfile = zipfile
        @quiz = quiz
      end

      def parse!
        @quiz.file_locations.each do |location|
          Parser.use_file(@zipfile, location) do |xml|
            doc = Nokogiri::XML(xml)
            doc.remove_namespaces!
            unless @quiz.question_count && !canvas?(location)
              # We need all questions that aren't a text only question. Re-usable, important sibling XML elements *sigh*.
              @quiz.question_count = doc.xpath("//item//fieldlabel[text()='question_type' or text()='cc_profile']/following-sibling::fieldentry[1][text() != 'text_only_question']").length
            end

            unless @quiz.points_possible
              if points = doc.xpath("//fieldlabel[text()='points_possible']/following-sibling::fieldentry[1]")
                @quiz.points_possible = points.text
              end
            end
          end
        end
      end

      private
      def canvas?(location)
        location =~ /non_cc_assessments/
      end
    end
  end
end