tofulcrum 0.0.7 → 0.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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