class Moodle2CC::Moodle2::Parsers::FeedbackParser
Constants
- FEEDBACK_MODULE_NAME
- FEEDBACK_XML
Public Class Methods
new(backup_dir)
click to toggle source
# File lib/moodle2cc/moodle2/parsers/feedback_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/feedback_parser.rb, line 12 def parse activity_dirs = activity_directories(@backup_dir, FEEDBACK_MODULE_NAME) activity_dirs.map { |dir| parse_feedback(dir) } end
Private Instance Methods
parse_feedback(dir)
click to toggle source
# File lib/moodle2cc/moodle2/parsers/feedback_parser.rb, line 19 def parse_feedback(dir) feedback = Moodle2CC::Moodle2::Models::Feedback.new activity_dir = File.join(@backup_dir, dir) File.open(File.join(activity_dir, FEEDBACK_XML)) do |f| xml = Nokogiri::XML(f) feedback.id = xml.at_xpath('/activity/feedback/@id').value feedback.module_id = xml.at_xpath('/activity/@moduleid').value feedback.name = parse_text(xml, '/activity/feedback/name') feedback.intro = parse_text(xml, '/activity/feedback/intro') feedback.intro_format = parse_text(xml, '/activity/feedback/introformat') feedback.time_open = parse_text(xml, '/activity/feedback/timeopen') feedback.time_close = parse_text(xml, '/activity/feedback/timeclose') feedback.time_modified = parse_text(xml, '/activity/feedback/timemodified') feedback.multiple_submit = parse_boolean(xml, '/activity/feedback/multiple_submit') xml.search('/activity/feedback/items/item').each do |node| item = Moodle2CC::Moodle2::Models::Feedback::Question.new item.id = node.attributes['id'].value item.name = parse_text(node, 'name') item.label = parse_text(node, 'label') item.type = parse_text(node, 'typ') item.position = parse_text(node, 'position') item.presentation = parse_text(node, 'presentation') feedback.items << item end feedback.items.sort_by!{|q| q.position.to_i} end parse_module(activity_dir, feedback) feedback end