-
Notifications
You must be signed in to change notification settings - Fork 0
/
directory.rb
104 lines (86 loc) · 1.91 KB
/
directory.rb
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
@students = []
def input_students
puts "Please enter the names of the students"
puts "To finish, just hit return twice"
name = STDIN.gets.chomp
while !name.empty? do
@students << {name: name, cohort: :november}
puts "Now we have #{@students.count} students"
name = STDIN.gets.chomp
end
end
def print_header
puts "The students of Villains academy"
puts "-----------"
end
def print_students_list
@students.each { |student|
puts "#{student[:name]} (#{student[:cohort]} cohort)"}
end
def print_footer
puts "Overall we have #{@students.count} great students"
end
def print_menu
puts "1. Input the students"
puts "2. Show the students"
puts "3. Save the list to students.csv"
puts "4. Load the list from students.csv"
puts "9. Exit"
end
def save_students
file = File.open("students.csv", "w")
@students.each do |student|
student_data = [student[:name], student[:cohort]]
csv_line = student_data.join(",")
file.puts csv_line
end
file.close
end
def try_load_students
filename = ARGV.first
return if filename.nil?
if File.exist?(filename)
load_students(filename)
puts "Loaded #{@students.count} from #{filename}"
else
puts "Sorry, #{filename} doesn't exist"
exit
end
end
def load_students(filename = "students.csv")
file = File.open(filename,"r")
file.readlines.each do |line|
name, cohort = line.chomp.split(',')
@students << {name: name, cohort: cohort.to_sym}
end
file.close
end
def show_students
print_header
print_students_list
print_footer
end
def process(selection)
case selection
when "1"
input_students
when "2"
show_students
when "3"
save_students
when "4"
load_students
when "9"
exit
else
puts "I'm not sure what you mean, please try again"
end
end
def interactive_menu
try_load_students
loop do
print_menu
process(STDIN.gets.chomp)
end
end
interactive_menu