Module: UKAcademicCalendar

Defined in:
lib/uk_academic_calendar.rb,
lib/uk_academic_calendar/term.rb,
lib/uk_academic_calendar/version.rb,
lib/uk_academic_calendar/autumn_term.rb,
lib/uk_academic_calendar/spring_term.rb,
lib/uk_academic_calendar/summer_term.rb,
lib/uk_academic_calendar/errors/error.rb,
lib/uk_academic_calendar/mixins/succ_slashable.rb,
lib/uk_academic_calendar/errors/invalid_term_end.rb,
lib/uk_academic_calendar/errors/invalid_term_bound.rb,
lib/uk_academic_calendar/errors/invalid_term_start.rb,
lib/uk_academic_calendar/mixins/date_and_time_instance_methods.rb

Overview

Top-level namespace, itself implementing a number of constants and module methods documented below.

Defined Under Namespace

Modules: DateAndTimeInstanceMethods, SuccSlashable Classes: AutumnTerm, Error, InvalidTermBound, InvalidTermEnd, InvalidTermStart, SpringTerm, SummerTerm, Term

Constant Summary collapse

YEAR_OFFSET_START_MONTH =

The month-number corresponding to the first month within the calendar year that the academic year starts in.

9
SEASONS =

The season-names designating the 3 terms.

[:autumn, :spring, :summer].freeze
VERSION =
'1.0.0'

Class Method Summary collapse

Class Method Details

.all_terms(academic_year) ⇒ Array(UKAcademicCalendar::AutumnTerm, UKAcademicCalendar::SpringTerm, UKAcademicCalendar::SummerTerm)

Returns array containing ordered instances of Autumn, Spring and Summer term.

Parameters:

  • academic_year (Integer)

    the calendar year the academic year starts in.

Returns:



44
45
46
# File 'lib/uk_academic_calendar.rb', line 44

def all_terms(academic_year)
  SEASONS.map { |term_name| public_send(:"#{term_name}_term", academic_year) }
end

.autumn_termUKAcademicCalendar::AutumnTerm

Returns instance of Autumn term.

Parameters:

  • academic_year (Integer)

    the calendar year the academic year starts in.

Returns:



# File 'lib/uk_academic_calendar.rb', line 23

.spring_termUKAcademicCalendar::SpringTerm

Returns instance of Spring term.

Parameters:

  • academic_year (Integer)

    the calendar year the academic year starts in.

Returns:



# File 'lib/uk_academic_calendar.rb', line 27

.summer_termUKAcademicCalendar::SummerTerm

Returns instance of Summer term.

Parameters:

  • academic_year (Integer)

    the calendar year the academic year starts in.

Returns:



34
35
36
37
38
39
# File 'lib/uk_academic_calendar.rb', line 34

SEASONS.each do |season|
  define_method(:"#{season}_term") do |academic_year|
    klass = Term.descendants.find { |c| c.to_s.demodulize.downcase.start_with? season.to_s }
    klass.new(academic_year)
  end
end

.term_including(val = Date.today) ⇒ UKAcademicCalendar::AutumnTerm, ...

Returns instance of Autumn/Spring/Summer term deemed to contain date param.

Parameters:

  • val (#to_date) (defaults to: Date.today)

Returns:



58
59
60
61
# File 'lib/uk_academic_calendar.rb', line 58

def term_including(val = Date.today)
  date = val.to_date
  all_terms(date.academic_year).find { |term| date.in? term }
end

.term_nowUKAcademicCalendar::AutumnTerm, ...

Convenience method for retrieving the term object including Date.today

Returns:



51
52
53
# File 'lib/uk_academic_calendar.rb', line 51

def term_now
  term_including
end