class LeapSalesforce::SoqlObject

Container for information regarding a SoqlObject

Attributes

backend_name[RW]

@return [String] Salesforce backend name

class_name[RW]

@return [String] Ruby class name

create_enum[RW]

@return [Boolean, Hash] Whether to create enumerations for object

description[RW]

@return [String] Description of Soql object from '.leap_salesforce' YAML

reference[RW]

@return [String] Snakecase version of ruby class. Name for methods / files to refer to class as

Public Class Methods

new(description) click to toggle source

Create a representation of a Soql object from a description (usually in .leap_salesforce.yml) @example Specific Salesforce object 'Case' to be represented

'Case'

@example Represent Broker object by class with different name

{ 'Broker' => Broker__c }

@example Represent Group object, specifying to ignore enums

{"Group"=>nil, "create_enum"=>true} }

@example Represent User object, specifying to ignore enum with name of Timezone

{"User"=>nil, "create_enum"=>{"exclude"=>["Timezone"]}}

@param [Hash, String] description

# File lib/leap_salesforce/soql_object.rb, line 27
def initialize(description)
  self.description = description
  interpret_description
  self.reference = @class_name.snakecase
end

Public Instance Methods

excludes?(picklist) click to toggle source

@param [String] picklist @return [Boolean] Whether picklist should be excluded from being generated

# File lib/leap_salesforce/soql_object.rb, line 35
def excludes?(picklist)
  if create_enum.is_a? Hash
    if create_enum['exclude']
      picklist_class = picklist.to_class_name
      create_enum['exclude'].any? do |exclusion_list|
        !picklist.to_s[Regexp.new(exclusion_list)].nil? || !picklist_class[Regexp.new(exclusion_list)].nil?
      end
    else
      false
    end
  else
    false
  end
end

Private Instance Methods

create_enum?() click to toggle source

@return [Boolean] Whether to create enum. Default is true.

# File lib/leap_salesforce/soql_object.rb, line 71
def create_enum?
  description['create_enum'].nil? ? true : description['create_enum']
end
interpret_description() click to toggle source

Set attributes based on description

# File lib/leap_salesforce/soql_object.rb, line 53
def interpret_description
  if description.is_a? Hash
    interpret_hash_description
  else
    self.backend_name = description.to_s
    self.class_name = backend_name.tr(" '/()-", '').tr('ā', 'a')
    self.create_enum = true
  end
end
interpret_hash_description() click to toggle source

Set attributes based on description where description is a Hash

# File lib/leap_salesforce/soql_object.rb, line 64
def interpret_hash_description
  self.create_enum = create_enum?
  self.class_name = description.keys[0]
  self.backend_name = description.values[0] || description.keys[0]
end