class Moodle2CC::Moodle2::Parsers::QuestionnaireParser
Constants
- QUESTIONNAIRE_MODULE_NAME
- QUESTIONNAIRE_XML
Public Class Methods
new(backup_dir)
click to toggle source
# File lib/moodle2cc/moodle2/parsers/questionnaire_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/questionnaire_parser.rb, line 12 def parse activity_dirs = activity_directories(@backup_dir, QUESTIONNAIRE_MODULE_NAME) activity_dirs.map { |dir| parse_questionnaire(dir) } end
Private Instance Methods
parse_questionnaire(dir)
click to toggle source
# File lib/moodle2cc/moodle2/parsers/questionnaire_parser.rb, line 19 def parse_questionnaire(dir) questionnaire = Moodle2CC::Moodle2::Models::Questionnaire.new activity_dir = File.join(@backup_dir, dir) File.open(File.join(activity_dir, QUESTIONNAIRE_XML)) do |f| xml = Nokogiri::XML(f) questionnaire.id = xml.at_xpath('/activity/questionnaire/@id').value questionnaire.module_id = xml.at_xpath('/activity/@moduleid').value questionnaire.name = parse_text(xml, '/activity/questionnaire/name') questionnaire.intro = parse_text(xml, '/activity/questionnaire/intro') questionnaire.intro_format = parse_text(xml, '/activity/questionnaire/introformat') questionnaire.open_date = parse_text(xml, '/activity/questionnaire/opendate') questionnaire.close_date = parse_text(xml, '/activity/questionnaire/closedate') questionnaire.time_modified = parse_text(xml, '/activity/questionnaire/timemodified') xml.search('/activity/questionnaire/surveys/survey/questions/question').each do |node| question = Moodle2CC::Moodle2::Models::Questionnaire::Question.new question.id = node.attributes['id'].value question.name = parse_text(node, 'name') question.type_id = parse_text(node, 'type_id') question.position = parse_text(node, 'position') question.content = parse_text(node, 'content') question.length = parse_text(node, 'length') # used for rating scale question.precise = parse_text(node, 'precise') # used for rating scale type question.deleted = parse_boolean(node, 'deleted') node.search('quest_choices/quest_choice').each do |choice_node| question.choices << { :id => choice_node.attributes['id'].value, :content => parse_text(choice_node, 'content') } end questionnaire.questions << question end questionnaire.questions.sort_by!{|q| q.position.to_i} end parse_module(activity_dir, questionnaire) questionnaire end