module LeapSalesforce::Generator

Generators for creating code

Generators for creating code

Generators for creating code

Public Instance Methods

create_inner_file(folder, name, binding) click to toggle source
# File lib/leap_salesforce/generator/generator.rb, line 62
def create_inner_file(folder, name, binding)
  item = name.to_s
  path = folder ? File.join(folder, item) : item
  generate_from_template path, binding
end
generate_file(filename, content, overwrite: true) click to toggle source

Generate file creating necessary folder if necessary @param [String] filename Name of file to generate @param [String] content Content to put within file

# File lib/leap_salesforce/generator/generator.rb, line 30
def generate_file(filename, content, overwrite: true)
  FileUtils.mkdir_p File.dirname filename unless File.directory? File.dirname(filename)
  action = if File.exist?(filename)
             return puts "File '#{filename}' already exists, skipping...".colorize :red unless overwrite

             'Updated'
           else
             'Created'
           end
  File.write filename, content
  puts "\u2713 #{action} #{filename}".colorize :green
end
generate_files(binding, list_of_files, folder: nil) click to toggle source

@example Create a spec_helper file and test file in spec folder

generate_files [ { spec: [ 'spec_helper.rb', 'limit_spec.rb' ] } ]

@param [Hash, Array] list_of_files Hash of files to generate for

# File lib/leap_salesforce/generator/generator.rb, line 46
def generate_files(binding, list_of_files, folder: nil)
  return create_inner_file(folder, list_of_files, binding) unless list_of_files.respond_to? :each

  list_of_files.each do |item|
    if item.is_a? Hash # Go one level deeper
      item.each do |inner_folder, sub_files|
        inner_folder = inner_folder.to_s
        current_folder = folder ? File.join(folder, inner_folder) : inner_folder
        generate_files binding, sub_files, folder: current_folder
      end
    else
      create_inner_file folder, item, binding
    end
  end
end
generate_from_template(template_name, binding) click to toggle source

Generate file from template @param [String] template_name Path to file with templates folder to use as template @param [Binding] binding Binding object used for ERB variables

# File lib/leap_salesforce/generator/generator.rb, line 71
def generate_from_template(template_name, binding)
  content = read_template "#{template_name}.erb", binding
  generate_file template_name, content, overwrite: false
end
read_template(filename, binding, folder: nil) click to toggle source

@param [String] filename Relative filename to this file @param [Binding] binding Binding object used for ERB variables @param [String] folder Folder where templates are stored (for external gems) @return [String] Interpreted file after calculating ERB for template file passed

# File lib/leap_salesforce/generator/generator.rb, line 23
def read_template(filename, binding, folder: nil)
  ERB.new(File.read(template_loc(filename, folder: folder))).result(binding)
end
template_loc(filename, folder: nil) click to toggle source

@param [String] filename Relative filename to this file @param [String] folder Folder where templates are stored (for external gems) @return [String] Location of template file

# File lib/leap_salesforce/generator/generator.rb, line 14
def template_loc(filename, folder: nil)
  template_dir = folder || __dir__
  File.join(template_dir, 'templates', filename)
end