module FacebookAds::FieldTypes

Public Instance Methods

for(type_spec) click to toggle source
# File lib/facebook_ads/field_types.rb, line 34
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
lookup(type_name) click to toggle source
# File lib/facebook_ads/field_types.rb, line 30
def lookup(type_name)
  @@registry && @@registry[type_name]
end
register(*type_names) click to toggle source
# File lib/facebook_ads/field_types.rb, line 23
def register(*type_names)
  @@registry ||= {}
  type_names.each do |type_name|
    @@registry[type_name] = self
  end
end