|
|
|
@ -3,15 +3,14 @@ require_relative 'person'
|
|
|
|
|
class StudentShort < Person
|
|
|
|
|
attr_reader :surname_initials
|
|
|
|
|
|
|
|
|
|
def initialize(id:, git:, surname_initials:, phone: nil, telegram: nil, email: nil)
|
|
|
|
|
super(id: id, git: git, phone: phone, telegram: telegram, email: email)
|
|
|
|
|
def initialize(id:, surname_initials:, phone: nil, telegram: nil, email: nil)
|
|
|
|
|
super(id: id, phone: phone, telegram: telegram, email: email)
|
|
|
|
|
@surname_initials = surname_initials
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def self.from_student(student)
|
|
|
|
|
new(
|
|
|
|
|
id: student.id,
|
|
|
|
|
git: student.git,
|
|
|
|
|
surname_initials: student.surname_and_initials,
|
|
|
|
|
phone: student.phone,
|
|
|
|
|
telegram: student.telegram,
|
|
|
|
@ -21,17 +20,15 @@ class StudentShort < Person
|
|
|
|
|
|
|
|
|
|
def self.from_string(id, info_string)
|
|
|
|
|
parts = info_string.split(',').map(&:strip)
|
|
|
|
|
raise ArgumentError, 'Invalid info string format' if parts.size < 3
|
|
|
|
|
raise ArgumentError, 'Invalid info string format' if parts.size < 2
|
|
|
|
|
|
|
|
|
|
surname_initials = parts[0]
|
|
|
|
|
git = parts[1].split(': ').last.strip
|
|
|
|
|
contact_string = parts[2].split(': ', 2).last.strip
|
|
|
|
|
contact_string = parts[1].split(': ', 2).last.strip
|
|
|
|
|
|
|
|
|
|
phone, telegram, email = parse_contact_string(contact_string)
|
|
|
|
|
|
|
|
|
|
new(
|
|
|
|
|
id: id,
|
|
|
|
|
git: git,
|
|
|
|
|
surname_initials: surname_initials,
|
|
|
|
|
phone: phone,
|
|
|
|
|
telegram: telegram,
|
|
|
|
@ -41,7 +38,7 @@ class StudentShort < Person
|
|
|
|
|
|
|
|
|
|
def to_s
|
|
|
|
|
contact_info = contact_info()
|
|
|
|
|
"#{@surname_initials}, Git: #{@git}, Contact: #{contact_info}"
|
|
|
|
|
"#{@surname_initials}, Contact: #{contact_info}"
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
private
|
|
|
|
|