class Student attr_accessor :id, :surname, :name, :patronymic, :phone, :telegram, :email, :git def self.valid_phone_number?(phone) phone.match?(/\A\+?[0-9]{10,15}\z/) end def initialize(args = {}) @surname = args.fetch(:surname) @name = args.fetch(:name) @patronymic = args.fetch(:patronymic) @id = args[:id] || nil @phone = args[:phone] if @phone && !Student.valid_phone_number?(@phone) raise ArgumentError, "Invalid phone number format: #{@phone}" end @telegram = args[:telegram] || nil @email = args[:email] || nil @git = args[:git] || nil end def to_s "Student: #{@surname} #{@name} #{@patronymic}\n" \ "ID: #{@id || 'N/A'}\n" \ "Phone: #{@phone || 'N/A'}\n" \ "Telegram: #{@telegram || 'N/A'}\n" \ "Email: #{@email || 'N/A'}\n" \ "Git: #{@git || 'N/A'}" end end