Module: Executrix::Helper

Extended by:
Helper
Included in:
Helper
Defined in:
lib/executrix/helper.rb

Constant Summary collapse

CSV_OPTIONS =
{
  col_sep: ',',
  quote_char: '"',
  force_quotes: true,
}

Instance Method Summary collapse

Instance Method Details

#absolute_to_relative_path(input, replacement) ⇒ Object



69
70
71
# File 'lib/executrix/helper.rb', line 69

def absolute_to_relative_path input, replacement
  input.gsub(/(^C:[\/\\])|(^\/)/,replacement)
end

#attachment_keys(records) ⇒ Object



45
46
47
48
49
50
51
# File 'lib/executrix/helper.rb', line 45

def attachment_keys records
  records.map do |record|
    record.select do |key, value|
      value.class == File
    end.keys
  end.flatten.uniq
end

#fetch_instance_from_server_url(server_url) ⇒ Object



40
41
42
43
# File 'lib/executrix/helper.rb', line 40

def fetch_instance_from_server_url server_url
  before_sf = server_url[/^https?:\/\/(.+)\.salesforce\.com/, 1]
  before_sf.gsub(/-api$/,'')
end

#parse_csv(csv_string) ⇒ Object



73
74
75
# File 'lib/executrix/helper.rb', line 73

def parse_csv csv_string
  CSV.parse(csv_string, headers: true).map{|r| r.to_hash}
end

#records_to_csv(records) ⇒ Object



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
# File 'lib/executrix/helper.rb', line 13

def records_to_csv records
  file_mock = StringIO.new
  csv_client = CSV.new(file_mock, CSV_OPTIONS)
  all_headers = []
  all_rows = []
  records.each do |hash|
    row = CSV::Row.new([],[],false)
    to_store = hash.inject({}) do |h, (k, v)|
      if v == nil || v == '' || v == []
        h[k] = '#N/A'
      else
        h[k] = v.class == Array ? v.join(';') : v
      end
      h
    end
    row << to_store
    all_headers << row.headers
    all_rows << row
  end
  all_headers.flatten!.uniq!
  csv_client << all_headers
  all_rows.each do |row|
    csv_client << row.fields(*all_headers)
  end
  file_mock.string
end

#transform_values!(records, keys) ⇒ Object



53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
# File 'lib/executrix/helper.rb', line 53

def transform_values! records, keys
  keys.each do |key|
    records.each do |record|
      file_handle = record[key]
      if file_handle
        file_path = File.absolute_path(file_handle)
        record
          .merge!({
            key => Executrix::Helper.absolute_to_relative_path(file_path,'#')
          })
        yield file_path if block_given?
      end
    end
  end
end