tofulcrum 0.0.11 → 0.0.12

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
- OTZhYTRjOTFhZmE1NTE3OWYzM2NkZTA4YjFmY2NjN2NjOTgzNzM3OA==
4
+ MzBhNzI3YWYyZTkxOTNmMjk5NmM4Yzg3ODBmODg5Y2E0NTJjNzA4MQ==
5
5
  data.tar.gz: !binary |-
6
- NWU0YzI2OTRiOTMyMmM1YzRmZWUxMWQ3MjcyNjExZmU3NmIwYjY3OA==
6
+ Nzg5OTk3ZTAwMGI4NmRhNTliMTZmMzU5NDQ3OWRjZmZhYTRmMjI0MA==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- Mzk0MjE3MmNkYzJkYzk4ZDhiOWYyM2Q3MDFmOTJkMmY2NzJiOTUyM2U0ODU1
10
- ZDhmMjZiOTAzZTkxNmUxM2QzZDk4MjRlNzdhNjZkMDIxYmUwOWY1M2M5NDE4
11
- N2YwZDg5NWU2YWI5Mzc3YWFlYzNlYjgxMTRmNTQxNGE0NjAwOTc=
9
+ MTJmNGQ3YmUzYTQxN2Q1MDQyNDQ2ZjE3MGU3MGEwMWRjMDdiZGIzZjFjY2I1
10
+ ZGUzODZkN2E1OWU3YzhmNWI3ZGZmOGVkMGEwYjk0ZTY2Zjg3ZDhjYTk2MWRj
11
+ NDA1ODhmMjAwOGQ4Yjk2MGM1ZDU2M2MzMWZmNWRmMDhmNGExMGI=
12
12
  data.tar.gz: !binary |-
13
- MTcxODZhN2ExZWVlMWZmZGM1NzEzNWQzZTc0ODhjYWQ4ODZkMzQxNjM2M2M5
14
- ODhiZGYwYzg4MTgwMzliZmFiODk1ZDRhN2U1OTAzYjk4Yjg4N2M3MzUyMDJj
15
- MGI0MTY5NzE2ZDI1MTRkYWYwNzdhMTdjMDBlY2Q2MjZmYTJiYmE=
13
+ ZTRhYjU1YzBmYjgwZmIzNmQ0MDRlZDNiYjQ5OGZmYjI3ZmZmNDc4NzM0Yjc4
14
+ MjBiNjJhYzljZmFmMmQ2YjdiODU3M2YyYjVlNDA2M2FlOTZhNTVhNzE4NDZk
15
+ NDg1YjBiMGQ1NjExMjk5YTMzYjg5MTJlNjE5MDEzNGQ3ZWE0OGQ=
@@ -27,12 +27,21 @@ module Fulcrum
27
27
  end
28
28
 
29
29
  def self.parse_schema(spreadsheet)
30
+ elements = make_elements(make_hash(spreadsheet.sheet('form')))
31
+
32
+ record_title_key = nil
33
+
34
+ if record_title_field = @metadata['record_title_field']
35
+ record_title_key = find_element(elements, record_title_field)[:key]
36
+ end
37
+
30
38
  form = { form: { name: @metadata['name'],
31
39
  description: @metadata['description'],
32
40
  status_field: @status_field,
33
- elements: make_elements(make_hash(spreadsheet.sheet('form'))) } }
41
+ record_title_key: record_title_key,
42
+ elements: elements } }
34
43
 
35
- puts form.to_json
44
+ puts JSON.pretty_generate(form)
36
45
  end
37
46
 
38
47
  def self.make_elements(rows)
@@ -72,9 +81,16 @@ module Fulcrum
72
81
  when 'repeatable end'
73
82
  raise "repeatable end found without matching begin" if containers.count == 1
74
83
 
84
+ repeatable_title_field_key = nil
85
+
86
+ if (title_field = current_container[:title_field_key]) && title_field.present?
87
+ repeatable_title_field_key = find_element(current_container[:elements], title_field, include_repeatables: false)[:key]
88
+ end
89
+
90
+ current_container[:title_field_key] = repeatable_title_field_key
91
+
75
92
  containers = containers[0..-2]
76
93
  current_container = containers.last
77
-
78
94
  end
79
95
  end
80
96
 
@@ -97,6 +113,10 @@ module Fulcrum
97
113
  hash[:key] = SecureRandom.hex(2)
98
114
 
99
115
  case hash[:type]
116
+ when 'Section'
117
+ hash[:display] = row['display'] == 'drilldown' ? 'drilldown' : 'inline'
118
+ when 'Repeatable'
119
+ hash[:title_field_key] = row['title_field']
100
120
  when 'ChoiceField'
101
121
  hash[:choices] = @choices[row['choices']] if hash[:type] == 'ChoiceField'
102
122
  hash[:allow_other] = boolean_value(row[:allow_other])
@@ -246,5 +266,24 @@ module Fulcrum
246
266
 
247
267
  rows
248
268
  end
269
+
270
+ def self.find_element(elements, data_name, opts={})
271
+ all_elements(elements, opts).find do |e|
272
+ e[:data_name] == data_name
273
+ end
274
+ end
275
+
276
+ def self.all_elements(elements, opts={})
277
+ elements.inject([]) do |array, el|
278
+ array << el
279
+ exclude_repeatables = !!opts[:exclude_repeatables]
280
+ if exclude_repeatables
281
+ array += all_elements(el[:elements], opts) if el[:elements] && el[:type] != 'Repeatable'
282
+ else
283
+ array += all_elements(el[:elements], opts) if el[:elements]
284
+ end
285
+ array
286
+ end
287
+ end
249
288
  end
250
289
  end
@@ -1,3 +1,3 @@
1
1
  module Tofulcrum
2
- VERSION = "0.0.11"
2
+ VERSION = "0.0.12"
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.11
4
+ version: 0.0.12
5
5
  platform: ruby
6
6
  authors:
7
7
  - Zac McCormick
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-02-20 00:00:00.000000000 Z
11
+ date: 2014-02-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday