class StudentShort attr_reader :id, :surname_initials, :git, :contact def initialize(student) @id = student.id @surname_initials = student.surname_and_initials @git = student.git_info @contact = student.contact_info end def self.from_string(id, info_string) parts = info_string.split(', ').map(&:strip) surname_initials = parts[0] git = parts[1].split(': ').last contact = parts[2].split(': ').last new_instance = allocate new_instance.send(:initialize_from_data, id, surname_initials, git, contact) new_instance end private def initialize_from_data(id, surname_initials, git, contact) @id = id @surname_initials = surname_initials @git = git @contact = contact end end