class Moodle2CC::Moodle2::Parsers::QuizParser
Constants
- QUIZ_MODULE_NAME
- QUIZ_XML
Public Class Methods
new(backup_dir)
click to toggle source
# File lib/moodle2cc/moodle2/parsers/quiz_parser.rb, line 8 def initialize(backup_dir) @backup_dir = backup_dir end
Public Instance Methods
parse()
click to toggle source
# File lib/moodle2cc/moodle2/parsers/quiz_parser.rb, line 12 def parse activity_dirs = activity_directories(@backup_dir, QUIZ_MODULE_NAME) activity_dirs.map { |dir| parse_quiz(dir) } end
Private Instance Methods
parse_quiz(dir)
click to toggle source
# File lib/moodle2cc/moodle2/parsers/quiz_parser.rb, line 19 def parse_quiz(dir) quiz = Moodle2CC::Moodle2::Models::Quizzes::Quiz.new activity_dir = File.join(@backup_dir, dir) File.open(File.join(activity_dir, QUIZ_XML)) do |f| xml = Nokogiri::XML(f) quiz.id = xml.at_xpath('/activity/quiz/@id').value quiz.module_id = xml.at_xpath('/activity/@moduleid').value quiz.name = parse_text(xml, '/activity/quiz/name') quiz.intro = parse_text(xml, '/activity/quiz/intro') quiz.intro_format = parse_text(xml, '/activity/quiz/introformat') quiz.time_open = parse_text(xml, '/activity/quiz/timeopen') quiz.time_close = parse_text(xml, '/activity/quiz/timeclose') quiz.time_limit = parse_text(xml, '/activity/quiz/timelimit') quiz.overdue_handling = parse_text(xml, '/activity/quiz/overduehandling') quiz.grace_period = parse_text(xml, '/activity/quiz/graceperiod') quiz.preferred_behavior = parse_text(xml, '/activity/quiz/preferredbehaviour') quiz.attempts_number = parse_text(xml, '/activity/quiz/attempts_number') quiz.attempt_on_last = parse_text(xml, '/activity/quiz/attemptonlast') quiz.grade_method = parse_text(xml, '/activity/quiz/grademethod') quiz.decimal_points = parse_text(xml, '/activity/quiz/decimalpoints') quiz.question_decimal_points = parse_text(xml, '/activity/quiz/questiondecimalpoints') quiz.review_attempt = parse_text(xml, '/activity/quiz/reviewattempt') quiz.review_correctness = parse_text(xml, '/activity/quiz/reviewcorrectness') quiz.review_marks = parse_text(xml, '/activity/quiz/reviewmarks') quiz.review_specific_feedback = parse_text(xml, '/activity/quiz/reviewspecificfeedback') quiz.review_general_feedback = parse_text(xml, '/activity/quiz/reviewgeneralfeedback') quiz.review_right_answer = parse_text(xml, '/activity/quiz/reviewrightanswer') quiz.review_overall_feedback = parse_text(xml, '/activity/quiz/reviewoverallfeedback') quiz.questions_per_page = parse_text(xml, '/activity/quiz/questionsperpage') quiz.nav_method = parse_text(xml, '/activity/quiz/navmethod') quiz.shuffle_questions = parse_boolean(xml, '/activity/quiz/shufflequestions') quiz.shuffle_answers = parse_boolean(xml, '/activity/quiz/shuffleanswers') quiz.sum_grades = parse_text(xml, '/activity/quiz/sumgrades') quiz.grade = parse_text(xml, '/activity/quiz/grade') quiz.time_created = parse_text(xml, '/activity/quiz/timecreated') quiz.time_modified = parse_text(xml, '/activity/quiz/timemodified') quiz.password = parse_text(xml, '/activity/quiz/password') quiz.subnet = parse_text(xml, '/activity/quiz/subnet') quiz.browser_security = parse_text(xml, '/activity/quiz/browsersecurity') quiz.delay1 = parse_text(xml, '/activity/quiz/delay1') quiz.delay2 = parse_text(xml, '/activity/quiz/delay2') quiz.show_user_picture = parse_text(xml, '/activity/quiz/showuserpicture') quiz.show_blocks = parse_text(xml, '/activity/quiz/showblocks') xml.search('/activity/quiz/question_instances/question_instance').each do |node| quiz.question_instances << { :question => parse_text(node, 'question') || parse_text(node, 'questionid'), :grade => parse_text(node, 'grade') || parse_text(node, 'maxmark') } end question_order = parse_text(xml, '/activity/quiz/questions').to_s.split(',') unless question_order.empty? quiz.question_instances.sort_by!{|qi| question_order.index(qi[:question])} end xml.search('/activity/quiz/feedbacks/feedback').each do |node| quiz.feedbacks << { :text => parse_text(node, 'feedbacktext'), :format => parse_text(node, 'feedbacktextformat'), :min_grade => parse_text(node, 'mingrade'), :max_grade => parse_text(node, 'maxgrade') } end end parse_module(activity_dir, quiz) quiz end