tofulcrum 0.0.7 → 0.0.8

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- YzdmZWE4NTQyNzllOTM0NDkzMDJlOGY0NGY1ZDEzZGM0MTc1MDlkMg==
4
+ MGFiOTNkNTQ2YmJmYzQ4OTQ4YzI4NDdkNWRiM2EwNTk0ZDgyZjFlOA==
5
5
  data.tar.gz: !binary |-
6
- MjM0NzI2MTBlYjQ4ZjU5ZTVkYWFkNjZjY2QxNWNmNjhiNTg3MWRlNg==
6
+ Y2E2NjE2MmZhNjM4NTM0OTgyMDZlYzYzODU4ZjZjMTdjM2M1OThhYg==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- YWEwMGRlOGIzZGU1OTZmZTkzZjI2YWNmMjcyYmZjMjc0M2QxMDBhMGZjYzll
10
- NGIzYTgyYWVlZWUxNWZiOTRmMWE5YjVhMDE3YzRiNTE2YTUwMGFjYjI2MTU1
11
- OTI5NDRmZTQxMTM4YjdhOWIyNTJjMTQ0MWVhZDgzN2MzMmE2ZmQ=
9
+ NzZkNjlkOTJiYWIxYThhNTVlZGVkMDkwZDg0ZjFmMGIyNjQzMmE2ZWMxMmY1
10
+ OWUxNjI1ZTkxYWI0NWM2NGEyNzU1MzM0ZGNhZGJkYTJjOGQwYzUyZTNjMmJl
11
+ MTMwOTg3NmViYWU3NmM2ZDEyZGJkYTBjMTIyMDYxN2E4ZWU2NzQ=
12
12
  data.tar.gz: !binary |-
13
- MGIwMjQzYTUwYmJkZGU5MGZmYzY5M2EyMjc3MGU5YTA1MmUwMTVjZmI2YTNm
14
- MmI0M2VhMzNkMzg1MWUyNzgwNWY4ZWZmNGI2OTkyODk3NzU5YmRlZDU3ZDFh
15
- MTc3ODVmODU0ZjZlNTIzMDg2MjgzYjZmMTljYmY2YzY1N2Y5MDU=
13
+ MDU3ZGZlMjNmMDg5NDJkMzZlNGVjZjdkOTcyMGZjMmMxYWNiNzkzZTc4NDVl
14
+ MjJhNGYyMWRiMTIyM2QyMDBjMjc4MDQ2MGI5MTRmMGZiNmY3N2QzZjU2NWU4
15
+ MzBkYjZlYTVjMmM2NDg5MThjMmU4M2QwNWU2Yjk2MTAxMDI0MDg=
data/lib/tofulcrum.rb CHANGED
@@ -16,25 +16,20 @@ module Tofulcrum
16
16
  row_index = 0
17
17
  upload_index = 0
18
18
 
19
- lat_index = nil
20
- lon_index = nil
21
19
  column_mapping = []
22
20
  records = []
21
+ system_columns = {}
23
22
 
24
23
  CSV.foreach(file) do |row|
25
24
  is_header = row_index == 0
26
25
 
27
26
  if is_header
28
- lat_index, lon_index = *find_geo_columns(row).compact
29
- raise 'Unable to find latitude/longitude columns' unless lat_index && lon_index
27
+ system_columns = find_system_columns(row)
28
+ raise 'Unable to find latitude/longitude columns' unless system_columns[:latitude] && system_columns[:longitude]
30
29
 
31
- lat_name = row[lat_index]
32
- lon_name = row[lon_index]
30
+ user_cols = user_columns(row, system_columns)
33
31
 
34
- headers = row.clone
35
- headers.delete_if {|v| [lat_name, lon_name].include?(v)}
36
-
37
- column_mapping = find_mapping_columns(form_id, headers, row, mapping)
32
+ column_mapping = find_mapping_columns(form_id, user_cols, row, mapping)
38
33
  else
39
34
  form_values = {}
40
35
 
@@ -54,12 +49,14 @@ module Tofulcrum
54
49
  record = {
55
50
  record: {
56
51
  form_id: form_id,
57
- latitude: row[lat_index].to_f,
58
- longitude: row[lon_index].to_f,
59
52
  form_values: form_values
60
53
  }
61
54
  }
62
55
 
56
+ system_columns.each do |attr, index|
57
+ record[:record][attr] = row[index]
58
+ end
59
+
63
60
  records << record
64
61
  end
65
62
 
@@ -116,6 +113,30 @@ module Tofulcrum
116
113
  end
117
114
  end
118
115
 
116
+ def user_columns(row, system_columns)
117
+ system_column_names = system_columns.keys.map {|k| row[system_columns[k]]}
118
+
119
+ row.clone.tap do |user_columns|
120
+ system_columns.each do |column, index|
121
+ user_columns.delete_if {|v| system_column_names.include?(v)}
122
+ end
123
+ end
124
+ end
125
+
126
+ def find_system_columns(headers)
127
+ lat_columns = ['lat', 'latitude', 'y']
128
+ lon_columns = ['lon', 'long', 'longitude', 'x']
129
+
130
+ {
131
+ latitude: headers.index {|h| lat_columns.include?(h.downcase) },
132
+ longitude: headers.index {|h| lon_columns.include?(h.downcase) },
133
+ project: headers.index {|h| h == 'project' },
134
+ status: headers.index {|h| h == 'status' },
135
+ client_created_at: headers.index {|h| h == 'created_at' },
136
+ client_updated_at: headers.index {|h| h == 'updated_at' },
137
+ }.delete_if {|k, v| v.nil?}
138
+ end
139
+
119
140
  def find_geo_columns(headers)
120
141
  lat_columns = ['lat', 'latitude', 'y']
121
142
  lon_columns = ['lon', 'long', 'longitude', 'x']
@@ -1,3 +1,3 @@
1
1
  module Tofulcrum
2
- VERSION = "0.0.7"
2
+ VERSION = "0.0.8"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tofulcrum
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.7
4
+ version: 0.0.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Zac McCormick
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-10-24 00:00:00.000000000 Z
11
+ date: 2013-10-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor