class Moodle2CC::Moodle2::Parsers::SectionParser

Constants

SECTION_XML

Public Class Methods

new(backup_dir) click to toggle source
# File lib/moodle2cc/moodle2/parsers/section_parser.rb, line 7
def initialize(backup_dir)
  @backup_dir = backup_dir
end

Public Instance Methods

parse() click to toggle source
# File lib/moodle2cc/moodle2/parsers/section_parser.rb, line 11
def parse
  section_directories.each_with_index.map { |section, i| parse_section(section, i) }
end

Private Instance Methods

parse_section(section_dir, i) click to toggle source
# File lib/moodle2cc/moodle2/parsers/section_parser.rb, line 17
def parse_section(section_dir, i)
  section = Moodle2CC::Moodle2::Models::Section.new
  File.open(File.join(@backup_dir, section_dir, SECTION_XML)) do |f|
    section_xml = Nokogiri::XML(f)
    section.position = i
    section.id = section_xml.%('/section/@id').value
    section.number = parse_text(section_xml, '/section/number')
    section.name = parse_text(section_xml, '/section/name')
    section.summary = parse_text(section_xml, '/section/summary')
    section.summary_format = parse_text(section_xml, 'section/summaryformat')
    section.sequence = parse_text(section_xml, 'section/sequence')
    if section.sequence
      section.sequence = section.sequence.split(',')
    else
      section.sequence = []
    end
    section.visible = parse_text(section_xml, 'section/visible') == '1' ? true : false
    section.available_from = parse_text(section_xml, 'section/availablefrom')
    section.available_until = parse_text(section_xml, 'section/availableuntil')
    section.show_availability = parse_text(section_xml, 'section/showavailability')
    section.grouping_id = parse_text(section_xml, 'section/groupingid')
  end
  if section.name.to_s.strip.length == 0
    section.name = Nokogiri::HTML(section.summary.to_s).text.to_s.strip rescue ''
  end

  section
end
section_directories() click to toggle source
# File lib/moodle2cc/moodle2/parsers/section_parser.rb, line 48
def section_directories
  File.open(File.join(@backup_dir, Moodle2CC::Moodle2::Extractor::MOODLE_BACKUP_XML)) do |f|
    moodle_backup_xml = Nokogiri::XML(f)
    sections = moodle_backup_xml / '/moodle_backup/information/contents/sections/section'
    sections.map { |section| section./('directory').text }
  end
end