Class: ScormEngine::Models::Course

Inherits:
Base
  • Object
show all
Defined in:
lib/scorm_engine/models/course.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Methods inherited from Base

#to_hash

Instance Attribute Details

#course_learning_standardString

The course’s learning standard.

Returns:

  • (String)

    (SCORM_11, SCORM_12, SCORM_2004_2ND_EDITION, SCORM_2004_3RD_EDITION, SCORM_2004_4TH_EDITION, AICC, XAPI, CMI5)



44
45
46
# File 'lib/scorm_engine/models/course.rb', line 44

def course_learning_standard
  @course_learning_standard
end

#descriptionString

The description of this course.

Returns:

  • (String)


34
35
36
# File 'lib/scorm_engine/models/course.rb', line 34

def description
  @description
end

#idString

The external identification of this course.

Returns:

  • (String)


9
10
11
# File 'lib/scorm_engine/models/course.rb', line 9

def id
  @id
end

#registration_countInteger

Returns:

  • (Integer)


24
25
26
# File 'lib/scorm_engine/models/course.rb', line 24

def registration_count
  @registration_count
end

#scaled_passing_scoreInteger

The score required of a learner to pass this course.

Returns:

  • (Integer)


39
40
41
# File 'lib/scorm_engine/models/course.rb', line 39

def scaled_passing_score
  @scaled_passing_score
end

#titleString

The title of this course.

Returns:

  • (String)


19
20
21
# File 'lib/scorm_engine/models/course.rb', line 19

def title
  @title
end

#updatedTime

Returns:

  • (Time)


29
30
31
# File 'lib/scorm_engine/models/course.rb', line 29

def updated
  @updated
end

#versionInteger

The version of this course.

Returns:

  • (Integer)


14
15
16
# File 'lib/scorm_engine/models/course.rb', line 14

def version
  @version
end

#web_pathString

The web path at which the course’s contents is hosted. For AICC courses, refer to the href proprety of the child activities as this value will not be available.

Returns:

  • (String)


51
52
53
# File 'lib/scorm_engine/models/course.rb', line 51

def web_path
  @web_path
end

Class Method Details

.get_scaled_passing_score_from_api(options = {}) ⇒ Integer

Extract and normalize the scaled passing score from the API options.

Parameters:

  • options (Hash) (defaults to: {})

    The API options hash

Returns:

  • (Integer)

    An integer between 0 and 100 or nil if undefined.



96
97
98
99
100
101
102
103
# File 'lib/scorm_engine/models/course.rb', line 96

def self.get_scaled_passing_score_from_api(options = {})
  first_child = options.fetch("rootActivity", {}).fetch("children", [{}]).first
  score = first_child.is_a?(Hash) ? first_child["scaledPassingScore"] : nil
  return if score.nil?
  score = score.to_f
  score *= 100 if score <= 1.0
  score.to_i
end

.get_title_from_api(options = {}) ⇒ String

Extract and sanitize the title from the API options.

Special consideration is given to two commonly found, but useless titles which if found will result in a blank title.

Parameters:

  • options (Hash) (defaults to: {})

    The API options hash

Returns:

  • (String)


81
82
83
84
85
# File 'lib/scorm_engine/models/course.rb', line 81

def self.get_title_from_api(options = {})
  title = ScormEngine::Utils.sanitized_text(options["title"])
  title = "" if ["Title", "Captivate E-Learning Course"].include?(title)
  title
end

.new_from_api(options = {}) ⇒ Object



53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
# File 'lib/scorm_engine/models/course.rb', line 53

def self.new_from_api(options = {})
  this = new

  this.options = options.dup
  this.id = options["id"]
  this.version = options["version"]
  this.title = get_title_from_api(options)
  this.registration_count = options["registrationCount"]
  this.updated = Time.parse(options["updated"]) if options.key?("updated")
  this.description = options.fetch("metadata", {})["description"]
  this.scaled_passing_score = get_scaled_passing_score_from_api(options)
  this.course_learning_standard = options["courseLearningStandard"]&.upcase
  this.web_path = options["webPath"]

  this
end