conglomerate 0.3.1 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f4fc3f553eb19fcaae033b0e4f282b90a02ebe76
4
- data.tar.gz: d103df8833f9900ed1b563a83899b8986bd1ac22
3
+ metadata.gz: cf07bfe4f1b76114a12c761021963d757b4863aa
4
+ data.tar.gz: 9adfde6792cb55ce176fa093121730dd0a14c3f9
5
5
  SHA512:
6
- metadata.gz: b70a06cf3cf2d5c9ddcb0f7be710070999933c577a50e4d15b0b235bdfe1025d1cc55c0d6e8260af40e51d6667e94438386bf5bd91702ff13aebe04e3f4cbcf4
7
- data.tar.gz: 6200528508229a70be96a79f75d93120ce349b3a209bf5129a2f238cc6a8e4b1ba7dfa6f1f744328ef485da73eddc23a832a7e9bac8f4277bebe830b049fbba2
6
+ metadata.gz: 68c902816e927e2e82dce10629dd2f8e21970c46bffb505dc9d5224148c8ccf36c3de41c6eac81226c9dee4289e3ae9cf7a3aeed2c21bda15e3b458cabc7d869
7
+ data.tar.gz: 65ecf817f7af2e06b3ef34cfca4abe80a698a8ff84d3b1e713d9214795edb9d1c8d4025e985689970d1b2b08333c1ddab4fc30da2ec42ec6e3129d50441941f6
@@ -41,15 +41,21 @@ module Conglomerate
41
41
  end
42
42
  end
43
43
 
44
- def apply_data(collection, data: [], object: nil, default_value: nil)
44
+ def apply_data(
45
+ collection, data: [], object: nil, default_value: nil,
46
+ build_template: false
47
+ )
45
48
  data = data.map do |datum|
46
49
  name = datum[:name]
47
50
  type = datum.fetch(:type, :value)
51
+ prompt = datum.fetch(:prompt, nil)
48
52
  value = sanitize_value(
49
53
  object, :name => name, :type => type, :default_value => default_value
50
54
  )
51
55
 
52
- {"name" => name.to_s, type.to_s => value}
56
+ {"name" => name.to_s, type.to_s => value}.tap do |d|
57
+ d["prompt"] = prompt if build_template && prompt
58
+ end
53
59
  end
54
60
 
55
61
  if data.empty?
@@ -104,12 +110,17 @@ module Conglomerate
104
110
  def apply_template(collection)
105
111
  attrs = self.class._attributes
106
112
  .select { |attr| attr[:template] }
113
+ attrs += self.class._templates
107
114
 
108
115
  if attrs.empty?
109
116
  collection
110
117
  else
111
118
  collection.merge(
112
- {"template" => apply_data({}, :data => attrs, :default_value => "")}
119
+ {
120
+ "template" => apply_data(
121
+ {}, :data => attrs, :default_value => "", :build_template => true
122
+ )
123
+ }
113
124
  )
114
125
  end
115
126
  end
@@ -201,10 +212,12 @@ module Conglomerate
201
212
  }
202
213
  end
203
214
 
204
- def attribute(name, template: false, rel: nil, type: :value, &block)
215
+ def attribute(
216
+ name, template: false, rel: nil, type: :value, prompt: nil, &block
217
+ )
205
218
  self._attributes = self._attributes << {
206
219
  :name => name, :template => template, :rel => rel, :type => type,
207
- :block => block
220
+ :prompt => prompt, :block => block
208
221
  }
209
222
  end
210
223
 
@@ -214,7 +227,14 @@ module Conglomerate
214
227
  }
215
228
  end
216
229
 
217
- attr_writer :_href, :_item_href, :_queries, :_attributes, :_links
230
+ def template(name, type: :value, prompt: nil)
231
+ self._templates = self._templates << {
232
+ :name => name, :type => type, :prompt => prompt, :template => true
233
+ }
234
+ end
235
+
236
+ attr_writer :_href, :_item_href, :_queries, :_attributes, :_links,
237
+ :_templates
218
238
 
219
239
  def _href
220
240
  @_href || nil
@@ -235,6 +255,10 @@ module Conglomerate
235
255
  def _links
236
256
  @_links || []
237
257
  end
258
+
259
+ def _templates
260
+ @_templates || []
261
+ end
238
262
  end
239
263
  end
240
264
  end
@@ -1,3 +1,3 @@
1
1
  module Conglomerate
2
- VERSION = "0.3.1"
2
+ VERSION = "0.4.0"
3
3
  end
@@ -7,7 +7,7 @@ class ConglomerateTestSerializer
7
7
  href { test_url }
8
8
  item_href { |item| item_url(item.id) }
9
9
 
10
- attribute :description, :template => true
10
+ attribute :description, :template => true, :prompt => "awesome"
11
11
  attribute :id
12
12
  attribute :event_id, :rel => :event do |item|
13
13
  event_url(item.event_id)
@@ -29,6 +29,8 @@ class ConglomerateTestSerializer
29
29
  query :search, :data => :id do
30
30
  search_items_url
31
31
  end
32
+
33
+ template :repeats, :prompt => "true|false"
32
34
  end
33
35
 
34
36
  class ConglomerateExtraTestSerializer
@@ -189,7 +191,8 @@ describe Conglomerate do
189
191
  it "includes a valid template if attributes have them" do
190
192
  expect(test_collection["template"]["data"]).to match_array(
191
193
  [
192
- {"name" => "description", "value" => ""}
194
+ {"name" => "description", "value" => "", "prompt" => "awesome"},
195
+ {"name" => "repeats", "value" => "", "prompt" => "true|false"}
193
196
  ]
194
197
  )
195
198
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: conglomerate
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Shane Emmons
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-01-24 00:00:00.000000000 Z
11
+ date: 2014-01-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler