class Moodle2CC::Moodle2::Parsers::FolderParser

Constants

FOLDER_MODULE_NAME
FOLDER_XML

Public Class Methods

new(backup_dir) click to toggle source
# File lib/moodle2cc/moodle2/parsers/folder_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/folder_parser.rb, line 12
def parse
  activity_dirs = activity_directories(@backup_dir, FOLDER_MODULE_NAME)
  activity_dirs.map { |dir| parse_folder(dir) }
end

Private Instance Methods

parse_files(dir) click to toggle source
# File lib/moodle2cc/moodle2/parsers/folder_parser.rb, line 41
def parse_files(dir)
  files = []
  File.open(File.join(@backup_dir, dir, FILES_XML)) do |f|
    xml = Nokogiri::XML(f)
    xml.search('/inforef/fileref/file').each do |node|
      files << parse_text(node, 'id')
    end
  end
  files
end
parse_folder(dir) click to toggle source
# File lib/moodle2cc/moodle2/parsers/folder_parser.rb, line 19
def parse_folder(dir)
  folder = Moodle2CC::Moodle2::Models::Folder.new
  activity_dir = File.join(@backup_dir, dir)
  File.open(File.join(activity_dir, FOLDER_XML)) do |f|
    xml = Nokogiri::XML(f)
    folder.module_id = xml.at_xpath('/activity/@moduleid').value
    folder.id = xml.at_xpath('/activity/folder/@id').value
    folder.name = parse_text(xml, '/activity/folder/name')
    folder.intro = parse_text(xml, '/activity/folder/intro')
    folder.intro_format = parse_text(xml, '/activity/folder/introformat')
    folder.revision = parse_text(xml, '/activity/folder/revision')

    #xml.search('/activity/book/chapters/chapter').each do |node|
    #  book.chapters << parse_chapter(node)
    #end
  end
  parse_module(activity_dir, folder)

  folder.file_ids += parse_files(dir)
  folder
end