class Moodle2CC::Moodle2::Parsers::BookParser
Constants
- BOOK_MODULE_NAME
- BOOK_XML
Public Class Methods
new(backup_dir)
click to toggle source
# File lib/moodle2cc/moodle2/parsers/book_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/book_parser.rb, line 12 def parse activity_dirs = activity_directories(@backup_dir, BOOK_MODULE_NAME) activity_dirs.map { |dir| parse_book(dir) } end
Private Instance Methods
parse_book(dir)
click to toggle source
# File lib/moodle2cc/moodle2/parsers/book_parser.rb, line 18 def parse_book(dir) book = Moodle2CC::Moodle2::Models::Book.new activity_dir = File.join(@backup_dir, dir) File.open(File.join(activity_dir, BOOK_XML)) do |f| xml = Nokogiri::XML(f) book.module_id = xml.at_xpath('/activity/@moduleid').value book.id = xml.at_xpath('/activity/book/@id').value book.name = parse_text(xml, '/activity/book/name') book.intro = parse_text(xml, '/activity/book/intro') book.intro_format = parse_text(xml, '/activity/book/introformat') book.numbering = parse_text(xml, '/activity/book/numbering') book.custom_titles = parse_text(xml, '/activity/book/customtitles') xml.search('/activity/book/chapters/chapter').each do |node| book.chapters << parse_chapter(node) end end parse_module(activity_dir, book) book.chapters.sort_by!{|c| c.pagenum.to_i} book end
parse_chapter(node)
click to toggle source
# File lib/moodle2cc/moodle2/parsers/book_parser.rb, line 41 def parse_chapter(node) chapter = Moodle2CC::Moodle2::Models::BookChapter.new chapter.id = node.at_xpath('@id').value chapter.pagenum = parse_text(node, 'pagenum') chapter.subchapter = parse_boolean(node, 'subchapter') chapter.title = parse_text(node, 'title') chapter.content = parse_text(node, 'content') chapter.content_format = parse_text(node, 'contentformat') chapter.hidden = parse_boolean(node, 'hidden') == '1' ? true : false chapter end