Method: FacebookAds::FieldTypes#for

Defined in:
lib/facebook_ads/field_types.rb

#for(type_spec) ⇒ Object



22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/facebook_ads/field_types.rb', line 22

def for(type_spec)
  if type_spec.is_a?(Hash)
    type_key = type_spec.keys[0]

    if field_type = lookup(type_key)
      field_type.new(type_spec[type_key])
    else
      raise "Invalid type: #{type_key}"
    end
  else
    if (field_type = lookup(type_spec))
      field_type.new
    else
      begin
        ad_object_class = FacebookAds.const_get(type_spec)
        field_type = lookup('ad_object')
        field_type.new(ad_object_class)
      rescue NameError
        # fallback to string class if nothing matches
        lookup('string').new
      end
    end
  end
end