-
Notifications
You must be signed in to change notification settings - Fork 5
Expand file tree
/
Copy path08-class.rb
More file actions
112 lines (100 loc) · 2.84 KB
/
08-class.rb
File metadata and controls
112 lines (100 loc) · 2.84 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
class Semester
SPRING_START_MONTH = "02"
SUMMER_START_MONTH = "05"
FALL_START_MONTH = "08"
attr_reader :indigit
attr_reader :inalpha
def initialize(now=Time.now)
init_indigit(now)
init_inalpha(now)
end
# return semester digit string
# e.g. "201502"
def init_indigit(now)
year = now.strftime("%Y")
month = now.strftime("%m").to_i
if month.between? 1,5
@indigit = year + SPRING_START_MONTH
elsif month.between? 6,7
@indigit = year + SUMMER_START_MONTH
else
@indigit = year + FALL_START_MONTH
end
end
# return semester alphabet string
# e.g. "Spring 2015"
def init_inalpha(now)
year = now.strftime("%Y")
month = now.strftime("%m").to_i
if month.between? 1,5
@inalpha = "Spring " + year
elsif month.between? 6,7
@inalpha = "Summer " + year
else
@inalpha = "Fall " + year
end
end
# return past semesters in array (in digits format e.g. 201502)
def past_semesters_indigit(num)
raise NotImplementedError
end
# return past semesters in array (in alphas format e.g. Spring 2015)
def past_semesters_inalpha(num)
raise NotImplementedError
end
# return previous semester (e.g. 201302 returns 201208)
def previous_semester_indigit(sem=@indigit)
year = sem[0..3]
term = sem[4..-1]
previous_semester = ""
if term == SPRING_START_MONTH
previous_semester = (year.to_i - 1).to_s + FALL_START_MONTH
elsif term == SUMMER_START_MONTH
previous_semester = year + SPRING_START_MONTH
else
previous_semester = year + SUMMER_START_MONTH
end
end
# return previous semester (e.g. Spring 2010 returns Fall 2009)
def previous_semester_inalpha(sem=@inalpha)
year = sem.split.last
term = sem.split.first
previous_semester = ""
if term == "Spring"
previous_semester = "Fall " + (year.to_i - 1).to_s
elsif term == "Summer"
previous_semester = "Spring " + year
else
previous_semester = "Summer " + year
end
end
# return next semester (e.g. 201302 returns 201305)
def next_semester_indigit
year = @indigit[0..3]
term = @indigit[4..-1]
next_semester = ""
if term == FALL_START_MONTH
next_semester = (year.to_i + 1).to_s + SPRING_START_MONTH
elsif term == SUMMER_START_MONTH
next_semester = year + FALL_START_MONTH
else
next_semester = year + SUMMER_START_MONTH
end
end
# return next semester (e.g. Fall 2020 returns Spring 2021)
def next_semester_inalpha
year = @inalpha.split.last
term = @inalpha.split.first
next_semester = ""
if term == "Fall"
next_semester = "Spring " + (year.to_i + 1).to_s
elsif term == "Summer"
next_semester = "Fall " + year
else
next_semester = "Summer " + year
end
end
def to_s
"#{@inalpha} - #{@indigit}"
end
end