You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
34 lines
761 B
34 lines
761 B
require_relative 'students_list_base'
|
|
require_relative '../student'
|
|
|
|
class StudentsListTXT < StudentsListBase
|
|
def load_from_file
|
|
if File.exist?(@filename)
|
|
File.open(@filename, 'r') do |file|
|
|
@students = file.each_line.map do |line|
|
|
line.strip!
|
|
next if line.empty?
|
|
begin
|
|
Student.from_string(line)
|
|
rescue ArgumentError => e
|
|
warn "Ошибка при парсинге строки: #{line}. #{e.message}"
|
|
nil
|
|
end
|
|
end.compact
|
|
end
|
|
else
|
|
@students = []
|
|
end
|
|
self
|
|
end
|
|
|
|
def save_to_file
|
|
File.open(@filename, 'w') do |file|
|
|
@students.each do |student|
|
|
file.puts student.to_s
|
|
end
|
|
end
|
|
self
|
|
end
|
|
end
|