Class: Exam::PassingCriterion

Inherits:
Object
  • Object
show all
Defined in:
app/models/exam/passing_criterion.rb

Direct Known Subclasses

None, PassedExercises, Percentage

Defined Under Namespace

Classes: None, PassedExercises, Percentage

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(value) ⇒ PassingCriterion

Returns a new instance of PassingCriterion.



5
6
7
# File 'app/models/exam/passing_criterion.rb', line 5

def initialize(value)
  @value = value
end

Instance Attribute Details

#valueObject (readonly)

Returns the value of attribute value.



3
4
5
# File 'app/models/exam/passing_criterion.rb', line 3

def value
  @value
end

Class Method Details

.parse(type, value) ⇒ Object



21
22
23
# File 'app/models/exam/passing_criterion.rb', line 21

def self.parse(type, value)
  parse_criterion_type(type, value)
end

.parse_criterion_type(type, value) ⇒ Object



25
26
27
28
29
# File 'app/models/exam/passing_criterion.rb', line 25

def self.parse_criterion_type(type, value)
  "Exam::PassingCriterion::#{type.camelize}".constantize.new(value)
rescue
  raise "Invalid criterion type #{type}"
end

Instance Method Details

#as_jsonObject



13
14
15
# File 'app/models/exam/passing_criterion.rb', line 13

def as_json
  {type: type, value: value}
end

#ensure_valid!Object



17
18
19
# File 'app/models/exam/passing_criterion.rb', line 17

def ensure_valid!
  raise "Invalid criterion value #{value} for #{type}" unless valid_passing_grade?
end

#typeObject



9
10
11
# File 'app/models/exam/passing_criterion.rb', line 9

def type
  self.class.name.demodulize.underscore
end