Class: PackAPI::Mapping::AttributeMap::ValueTransformation

Inherits:
Object
  • Object
show all
Defined in:
lib/pack_api/mapping/attribute_map.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(klass, proc_or_method_name, kwargs = nil) ⇒ ValueTransformation

Returns a new instance of ValueTransformation.



216
217
218
219
220
221
222
223
# File 'lib/pack_api/mapping/attribute_map.rb', line 216

def initialize(klass, proc_or_method_name, kwargs = nil)
  if proc_or_method_name.is_a?(Proc)
    @proc = proc_or_method_name
  else
    @instance_method = klass.instance_method(proc_or_method_name)
  end
  self.kwargs = kwargs
end

Instance Attribute Details

#instance_methodObject (readonly)

Returns the value of attribute instance_method.



214
215
216
# File 'lib/pack_api/mapping/attribute_map.rb', line 214

def instance_method
  @instance_method
end

#procObject (readonly)

Returns the value of attribute proc.



214
215
216
# File 'lib/pack_api/mapping/attribute_map.rb', line 214

def proc
  @proc
end

Instance Method Details

#call(attribute_map, attribute_value) ⇒ Object



225
226
227
228
229
230
231
232
233
234
235
# File 'lib/pack_api/mapping/attribute_map.rb', line 225

def call(attribute_map, attribute_value)
  if @kwargs
    proc ?
      attribute_map.instance_exec(attribute_value, **@kwargs, &proc) :
      attribute_map.send(instance_method.name, attribute_value, **@kwargs)
  else
    proc ?
      attribute_map.instance_exec(attribute_value, &proc) :
      attribute_map.send(instance_method.name, attribute_value)
  end
end

#kwargs=(new_kwargs) ⇒ Object



237
238
239
240
241
# File 'lib/pack_api/mapping/attribute_map.rb', line 237

def kwargs=(new_kwargs)
  @kwargs = new_kwargs == DEFAULT_OPTIONS || new_kwargs.blank? ?
              nil :
            supported_kwargs(new_kwargs)
end