Class: Apexgen::CustomObject

Inherits:
Object
  • Object
show all
Defined in:
lib/apexgen/custom_object.rb

Instance Method Summary collapse

Constructor Details

#initialize(name, fields = []) ⇒ CustomObject

Returns a new instance of CustomObject.



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# File 'lib/apexgen/custom_object.rb', line 5

def initialize(name, fields=[])
  # Set up vars
  @name = name
  @fields = fields
  @name_plural = name.pluralize
  @object_name = "#{@name}__c"
  formats = {
    'text'          => Apexgen::Field::Text.new,
    'encryptedtext' => Apexgen::Field::EncryptedText.new,
    'textarea'      => Apexgen::Field::TextArea.new,
    'longtextarea'  => Apexgen::Field::LongTextArea.new,
    'richtextarea'  => Apexgen::Field::RichTextArea.new,
    'url'           => Apexgen::Field::Url.new,
    'autonumber'    => Apexgen::Field::AutoNumber.new,
    'checkbox'      => Apexgen::Field::Checkbox.new,
    'currency'      => Apexgen::Field::Currency.new,
    'datetime'      => Apexgen::Field::DateTime.new,
    'date'          => Apexgen::Field::Date.new,
    'email'         => Apexgen::Field::Email.new,
    'geolocation'   => Apexgen::Field::Geolocation.new,
    'number'   => Apexgen::Field::Number.new,
    'percent'       => Apexgen::Field::Percent.new,
    'phone'         => Apexgen::Field::Phone.new,
  }

  # Filename and path setup
  @file_name = "#{@object_name}.object"
  @dir_name = File.join(ENV['PWD'], 'objects')

  # Make the directory if it doesn't exist yet
  Dir.mkdir @dir_name unless File.directory? @dir_name

  # Make the file
  File.open(File.join(@dir_name, @file_name), "w") do |f|
    xml = String.new
    xml << header
    
    @fields.each do |field|
      name, type = field.split(':')
      type = 'text' if type == nil
      formatter = formats[type.downcase]
      xml << formatter.format(name)
    end
    
    xml << footer
    f.write xml
  end
end