class SchoolYear

Public Class Methods

academic_year(date) click to toggle source
# File lib/school_year.rb, line 19
def academic_year(date)
  date.year + (date.month < 7 ? 0 : 1)
end
default_first_day_of_school(academic_year_or_date) click to toggle source
# File lib/school_year.rb, line 27
def default_first_day_of_school(academic_year_or_date)
  if academic_year_or_date.class == Integer
    Date.new(academic_year_or_date - 1, 9, 1)
  elsif academic_year_or_date.class == Date
    Date.new(academic_year_or_date.year - (academic_year_or_date.month < 7 ? 1 : 0), 9, 1)
  end
end
default_last_day_of_school(academic_year_or_date) click to toggle source
# File lib/school_year.rb, line 35
def default_last_day_of_school(academic_year_or_date)
  if academic_year_or_date.class == Integer
    Date.new(academic_year_or_date, 6, 15)
  elsif academic_year_or_date.class == Date
    Date.new(academic_year_or_date.year + (academic_year_or_date.month < 7 ? 0 : 1), 6, 15)
  end
end
grade_on_date(date, standard_graduation_year) click to toggle source
# File lib/school_year.rb, line 23
def grade_on_date(date, standard_graduation_year)
  year_to_grade(academic_year(date), standard_graduation_year)
end
grade_to_graduation_year(grade, academic_year=academic_year(Date.today)) click to toggle source
# File lib/school_year.rb, line 6
def grade_to_graduation_year(grade, academic_year=academic_year(Date.today))
  return nil unless (0..12).include? grade
  academic_year + (12 - grade)
end
grade_to_year(grade, standard_graduation_year) click to toggle source
# File lib/school_year.rb, line 11
def grade_to_year(grade, standard_graduation_year)
  standard_graduation_year - 12 + grade
end
school_days_elapsed(date = nil, first_attendance_day = nil) click to toggle source
# File lib/school_year.rb, line 43
def school_days_elapsed(date = nil, first_attendance_day = nil)
  if date
    first_attendance_day ||= default_first_day_of_school(date)
    (date - first_attendance_day) * 5 / 7.0
  else
    (default_last_day_of_school(1901) - default_first_day_of_school(1901)) * 5 / 7.0 # 1901 in order to miss leap year
  end
end
year_to_grade(year, standard_graduation_year) click to toggle source
# File lib/school_year.rb, line 15
def year_to_grade(year, standard_graduation_year)
  year + 12 - standard_graduation_year
end