Class: StudentList

Inherits:
Object
  • Object
show all
Defined in:
lib/Student_list.rb

Instance Method Summary collapse

Constructor Details

#initialize(typer) ⇒ StudentList

Returns a new instance of StudentList.



6
7
8
9
10
# File 'lib/Student_list.rb', line 6

def initialize(typer)
  self.students = []
  self.gen_id = students.count + 1
  self.typer = typer
end

Instance Method Details

#add_student(student) ⇒ Object



32
33
34
35
36
# File 'lib/Student_list.rb', line 32

def add_student(student)
  students << student
  student.id = gen_id
  nextId
end

#countObject



57
58
59
# File 'lib/Student_list.rb', line 57

def count
  self.students.count
end

#get_student(stud_id) ⇒ Object



24
25
26
# File 'lib/Student_list.rb', line 24

def get_student(stud_id)
  students.find{|s| s.id == stud_id}
end

#get_students_pag(k, n, existing_data = nil) ⇒ Object



38
39
40
41
42
43
44
45
46
# File 'lib/Student_list.rb', line 38

def get_students_pag(k,n,existing_data = nil)
  skip = (k-1) * n
  new_data = students[skip, n].map{|s| StudentShort.from_student_class(s)}

  return DataListStudentShort.new(new_data) if existing_data.nil?

  existing_data.replace_objects(new_data)
  existing_data
end

#nextIdObject



61
62
63
# File 'lib/Student_list.rb', line 61

def nextId
  self.gen_id=students.max_by(&:id).id + 1
end

#read_file(file_path) ⇒ Object

Raises:

  • (ArgumentError)


12
13
14
15
16
17
# File 'lib/Student_list.rb', line 12

def read_file(file_path)
  raise ArgumentError.new("File not found #{file_path}") unless File.file?(file_path)
  hash_students = typer.read_file(File.read(file_path))
  self.students = hash_students.map{|h| Student.from_hash(h)}
  nextId
end

#remove_student(student_id) ⇒ Object



53
54
55
# File 'lib/Student_list.rb', line 53

def remove_student(student_id)
  self.students.reject! {|s| s.id==student_id}
end

#replace_student(student_id, student) ⇒ Object



48
49
50
51
# File 'lib/Student_list.rb', line 48

def replace_student(student_id, student)
  idx = student.find{|s| s.id==student.id}
  self.students[idx]=student
end

#sortedObject



28
29
30
# File 'lib/Student_list.rb', line 28

def sorted
  students.sort_by(&:fio)
end

#write_file(file_path) ⇒ Object



19
20
21
22
# File 'lib/Student_list.rb', line 19

def write_file(file_path)
  hash_students = students.map(&:to_hash)
  File.write(file_path, typer.write_file(hash_students))
end