Sha256: 11fc53e9a14cc24fa6318c553a20d3aab02bbc714163296d34df5843173cbaac

Contents?: true

Size: 616 Bytes

Versions: 10

Compression:

Stored size: 616 Bytes

Contents

class Gaku::Grading::Single::Ordinal < Gaku::Grading::Single::BaseMethod

  attr_accessor :criteria

  def grade_exam
    exam = @gradable

    percentage = Gaku::Grading::Single::Percentage.new(exam, @student).grade
    @result = { id: @student.id, score: ordinal(percentage['score']) }
  end

  private

  def ordinal(percentage)
    if percentage
      criteria.sort_by(&:last).reverse.find  do |grade, min_points|
        percentage >= min_points.to_i
      end.first
    end
  end

  def criteria
    if @criteria.values.include? '0'
      @criteria
    else
      @criteria.merge('' => '0')
    end
  end

end

Version data entries

10 entries across 10 versions & 2 rubygems

Version Path
gaku-0.2.4 core/lib/gaku/grading/single/ordinal.rb
gaku_core-0.2.4 lib/gaku/grading/single/ordinal.rb
gaku-0.2.3 core/lib/gaku/grading/single/ordinal.rb
gaku_core-0.2.3 lib/gaku/grading/single/ordinal.rb
gaku-0.2.2 core/lib/gaku/grading/single/ordinal.rb
gaku_core-0.2.2 lib/gaku/grading/single/ordinal.rb
gaku-0.2.1 core/lib/gaku/grading/single/ordinal.rb
gaku_core-0.2.1 lib/gaku/grading/single/ordinal.rb
gaku-0.2.0 core/lib/gaku/grading/single/ordinal.rb
gaku_core-0.2.0 lib/gaku/grading/single/ordinal.rb