|
|
|
@ -1,12 +1,10 @@
|
|
|
|
|
require_relative 'contact'
|
|
|
|
|
|
|
|
|
|
class Person
|
|
|
|
|
attr_reader :id, :git, :contact
|
|
|
|
|
|
|
|
|
|
def initialize(id:, git:, contact: Contact.new)
|
|
|
|
|
validate_id(id)
|
|
|
|
|
validate_contact(contact)
|
|
|
|
|
|
|
|
|
|
self.class.validate_id(id)
|
|
|
|
|
self.class.validate_contact(contact)
|
|
|
|
|
|
|
|
|
|
@id = id
|
|
|
|
|
@git = git
|
|
|
|
|
@contact = contact
|
|
|
|
@ -24,32 +22,31 @@ class Person
|
|
|
|
|
@contact.get_single_contact
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def self.valid_git?(git)
|
|
|
|
|
/\Ahttps:\/\/github\.com\/[A-Za-z0-9_\-]+\z/.match?(git)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def self.valid_id?(id)
|
|
|
|
|
id.is_a?(String) && !id.strip.empty?
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def git=(git)
|
|
|
|
|
validate_git(git)
|
|
|
|
|
self.class.validate_git(git)
|
|
|
|
|
@git = git
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
private
|
|
|
|
|
|
|
|
|
|
def validate_id(id)
|
|
|
|
|
raise ArgumentError, 'ID is required and must be a non-empty string' unless self.class.valid_id?(id)
|
|
|
|
|
# Методы класса
|
|
|
|
|
def self.validate_id(id)
|
|
|
|
|
raise ArgumentError, 'ID is required and must be a non-empty string' unless valid_id?(id)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def validate_git(git)
|
|
|
|
|
def self.validate_git(git)
|
|
|
|
|
raise ArgumentError, 'Git link is required' if git.nil? || git.strip.empty?
|
|
|
|
|
raise ArgumentError, 'Invalid Git link format' unless self.class.valid_git?(git)
|
|
|
|
|
raise ArgumentError, 'Invalid Git link format' unless valid_git?(git)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def validate_contact(contact)
|
|
|
|
|
def self.validate_contact(contact)
|
|
|
|
|
raise ArgumentError, 'Contact must be a valid Contact object' unless contact.is_a?(Contact)
|
|
|
|
|
raise ArgumentError, 'Contact must have at least one valid field' unless contact.present?
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def self.valid_git?(git)
|
|
|
|
|
/\Ahttps:\/\/github\.com\/[A-Za-z0-9_\-]+\z/.match?(git)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def self.valid_id?(id)
|
|
|
|
|
id.is_a?(String) && !id.strip.empty?
|
|
|
|
|
end
|
|
|
|
|
end
|