Class: Moodle2CC::Moodle2::Parsers::QuestionParsers::QuestionParser

Inherits:
Object
  • Object
show all
Includes:
ParserHelper
Defined in:
lib/moodle2cc/moodle2/parsers/question_parsers/question_parser.rb

Constant Summary collapse

@@subclasses =
{}

Constants included from ParserHelper

ParserHelper::FILES_XML, ParserHelper::IMS_FILEBASE_TOKEN, ParserHelper::MODULE_XML, ParserHelper::MOODLE_FILEBASE_TOKEN, ParserHelper::SLASH_TOKEN, ParserHelper::XML_NULL_VALUE

Class Method Summary collapse

Instance Method Summary collapse

Methods included from ParserHelper

#activity_directories, #parse_boolean, #parse_module, #parse_text

Class Method Details

.parse(node) ⇒ Object



9
10
11
12
13
14
15
16
# File 'lib/moodle2cc/moodle2/parsers/question_parsers/question_parser.rb', line 9

def self.parse(node)
  type = node.%("qtype").text
  if (c = @@subclasses[type])
    c.new.parse_question(node)
  else
    raise "Unknown parser type: #{type}"
  end
end

.register_parser_type(name) ⇒ Object



18
19
20
# File 'lib/moodle2cc/moodle2/parsers/question_parsers/question_parser.rb', line 18

def self.register_parser_type(name)
  @@subclasses[name] = self
end

Instance Method Details

#parse_question(node, question_type = nil) ⇒ Object



27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/moodle2cc/moodle2/parsers/question_parsers/question_parser.rb', line 27

def parse_question(node, question_type = nil)
  question_type ||= parse_text(node, "qtype")
  question = Models::Quizzes::Question.create question_type

  question.id = node.at_xpath("@id").value
  question.bank_entry_id = parse_text(node, "bank_entry_id")
  question.parent = parse_text(node, "parent")
  question.name = parse_text(node, "name")
  question.question_text = parse_text(node, "questiontext")
  question.question_text_format = parse_text(node, "questiontextformat")
  question.general_feedback = parse_text(node, "generalfeedback")
  question.default_mark = parse_text(node, "defaultmark")
  question.max_mark = parse_text(node, "maxmark")
  question.penalty = parse_text(node, "penalty")
  question.qtype = parse_text(node, "qtype")
  question.length = parse_text(node, "length")
  question.stamp = parse_text(node, "stamp")
  question.version = parse_text(node, "version")
  question.hidden = parse_boolean(node, "hidden")

  question
rescue Exception => e
  Moodle2CC::OutputLogger.logger.info e.message
  nil
end