class Moodle2CC::Moodle2::Parsers::WikiParser

Constants

WIKI_MODULE_NAME
WIKI_XML

Public Class Methods

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

Private Instance Methods

parse_wiki(dir) click to toggle source
# File lib/moodle2cc/moodle2/parsers/wiki_parser.rb, line 19
def parse_wiki(dir)
  wiki = Moodle2CC::Moodle2::Models::Wiki.new
  activity_dir = File.join(@backup_dir, dir)
  File.open(File.join(activity_dir, WIKI_XML)) do |f|
    wiki_xml = Nokogiri::XML(f)
    wiki.id = wiki_xml.at_xpath('/activity/wiki/@id').value
    wiki.module_id = wiki_xml.at_xpath('/activity/@moduleid').value
    wiki.name = parse_text(wiki_xml, '/activity/wiki/name')
    wiki.intro = parse_text(wiki_xml, '/activity/wiki/intro')
    wiki.intro_format = parse_text(wiki_xml, '/activity/wiki/introformat')

    wiki.first_page_title = parse_text(wiki_xml, '/activity/wiki/firstpagetitle')

    wiki_xml.search('/activity/wiki/subwikis/subwiki/pages/page').each do |node|
      wiki.pages << {
        :id => node.attributes['id'].value,
        :title => parse_text(node, 'title'),
        :content => parse_text(node, 'cachedcontent')
      }
    end
  end
  parse_module(activity_dir, wiki)

  wiki
end