Class: SplitApi::DataObjects::BaseDataObject

Inherits:
Object
  • Object
show all
Defined in:
lib/splitapi-rb/data_objects/base_data_object.rb

Direct Known Subclasses

Attribute, Environment, Identity, TrafficType

Constant Summary collapse

PROPERTIES =

this is redefined in the subclass

%i().freeze

Instance Method Summary collapse

Constructor Details

#initialize(opts = {}) ⇒ BaseDataObject

Returns a new instance of BaseDataObject.



6
7
8
9
10
# File 'lib/splitapi-rb/data_objects/base_data_object.rb', line 6

def initialize(opts = {})
  opts.each do |k, v|
    instance_variable_set("@#{k}", v) unless v.nil?
  end
end

Instance Method Details

#==(other_obj) ⇒ Object



12
13
14
# File 'lib/splitapi-rb/data_objects/base_data_object.rb', line 12

def ==(other_obj)
  self.class::PROPERTIES.all? { |property| send(property) == other_obj.send(property) }
end

#to_hObject



16
17
18
19
20
# File 'lib/splitapi-rb/data_objects/base_data_object.rb', line 16

def to_h
  self.class::PROPERTIES.each_with_object({}) do |property, memo|
    memo.merge!(property => instance_variable_get("@#{property}"))
  end
end