class Moodle2CC::Moodle2::Parsers::LtiParser

Constants

LTI_MODULE_NAME
LTI_XML

Public Class Methods

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

Private Instance Methods

parse_lti(dir) click to toggle source
# File lib/moodle2cc/moodle2/parsers/lti_parser.rb, line 19
def parse_lti(dir)
  model = nil
  activity_dir = File.join(@backup_dir, dir)
  File.open(File.join(activity_dir, LTI_XML)) do |f|
    lti_xml = Nokogiri::XML(f)
    points = parse_text(lti_xml, '/activity/lti/grade')
    if points && points.to_i > 0
      model = Models::Assignment.new
      model.id        = lti_xml.at_xpath('/activity/lti/@id').value
      model.module_id = lti_xml.at_xpath('/activity/@moduleid').value
      model.name      = parse_text(lti_xml, '/activity/lti/name')
      model.intro     = parse_text(lti_xml, "/activity/lti/intro")
      model.intro_format = parse_text(lti_xml, "/activity/lti/introformat")
      model.grade     = points
      model.external_tool_url = parse_text(lti_xml, '/activity/lti/toolurl')
    else
      model = Models::Lti.new
      model.id        = lti_xml.at_xpath('/activity/lti/@id').value
      model.module_id = lti_xml.at_xpath('/activity/@moduleid').value
      model.name      = parse_text(lti_xml, '/activity/lti/name')
      model.url       = parse_text(lti_xml, '/activity/lti/toolurl')
    end
  end
  parse_module(activity_dir, model)
  model
end