Sha256: cda1a0ad738235058a79da928cc7ff559fe3ca64420b8913027c8306a313cb4e

Contents?: true

Size: 1.6 KB

Versions: 37

Compression:

Stored size: 1.6 KB

Contents

# frozen_string_literal: true

module LeapSalesforce
  # Container for information regarding a SoqlObject
  class SoqlObject
    # @return [String] Ruby class name
    attr_accessor :class_name
    # @return [String] Salesforce backend name
    attr_accessor :backend_name
    # @return [String] Snakecase version of ruby class. Name for methods / files to refer to class as
    attr_accessor :reference
    # @return [String] Description of Soql object from '.leap_salesforce' YAML
    attr_accessor :description
    # @return [Boolean] Whether to create enumerations for object
    attr_accessor :create_enum

    # Create a representation of a Soql object from a description (usually in .leap_salesforce.yml)
    def initialize(description)
      self.description = description
      interpret_description
      self.reference = @class_name.snakecase
    end

    private

    # Set attributes based on description
    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

    # Set attributes based on description where description is a Hash
    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

    # @return [Boolean] Whether to create enum. Default is true.
    def create_enum?
      description['create_enum'].nil? ? true : description['create_enum']
    end
  end
end

Version data entries

37 entries across 37 versions & 1 rubygems

Version Path
leap_salesforce-0.2.20 lib/leap_salesforce/soql_object.rb
leap_salesforce-0.2.19 lib/leap_salesforce/soql_object.rb
leap_salesforce-0.2.18 lib/leap_salesforce/soql_object.rb
leap_salesforce-0.2.17 lib/leap_salesforce/soql_object.rb
leap_salesforce-0.2.16 lib/leap_salesforce/soql_object.rb
leap_salesforce-0.2.15 lib/leap_salesforce/soql_object.rb
leap_salesforce-0.2.14 lib/leap_salesforce/soql_object.rb
leap_salesforce-0.2.13 lib/leap_salesforce/soql_object.rb
leap_salesforce-0.2.12 lib/leap_salesforce/soql_object.rb
leap_salesforce-0.2.11 lib/leap_salesforce/soql_object.rb
leap_salesforce-0.2.10 lib/leap_salesforce/soql_object.rb
leap_salesforce-0.2.9 lib/leap_salesforce/soql_object.rb
leap_salesforce-0.2.8 lib/leap_salesforce/soql_object.rb
leap_salesforce-0.2.7 lib/leap_salesforce/soql_object.rb
leap_salesforce-0.2.6 lib/leap_salesforce/soql_object.rb
leap_salesforce-0.2.5 lib/leap_salesforce/soql_object.rb
leap_salesforce-0.2.4 lib/leap_salesforce/soql_object.rb
leap_salesforce-0.2.3 lib/leap_salesforce/soql_object.rb
leap_salesforce-0.2.2 lib/leap_salesforce/soql_object.rb
leap_salesforce-0.2.1 lib/leap_salesforce/soql_object.rb