building-blocks 1.2.1 → 1.2.2

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.
data/CHANGELOG.rdoc CHANGED
@@ -10,4 +10,12 @@
10
10
  * Changed prototype for "use" method, such that the name of the block being rendered is now a required parameter.
11
11
  * Documented BuildingBlocks::Base more thoroughly
12
12
  * Changed the blocks.use method to blocks.render (blocks.use is still available for legacy purposes)
13
- * Removed the original render method and replaced with render_template that takes the partial and block to render as arguments.
13
+ * Removed the original render method and replaced with render_template that takes the partial and block to render as arguments.
14
+
15
+ 1.2.1 (February 7, 2012)
16
+
17
+ * Only try to render "before" and "after" blocks as partials if that BuildingBlocks::USE_PARTIALS_FOR_BEFORE_AND_AFTER_HOOKS is globally set to true (set to false now by default)
18
+
19
+ 1.2.2 (February 9, 2012)
20
+
21
+ * Allow :use_partials and :use_partials_for_before_and_after_hooks to be passed in as initialization options to BuildingBlocks::Base to control whether BuildingBlocks attempts to render partials when "blocks.render" is called.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.2.1
1
+ 1.2.2
@@ -28,6 +28,12 @@ module BuildingBlocks
28
28
  # The variable to use when rendering the partial for the templating feature (by default, "blocks")
29
29
  attr_accessor :variable
30
30
 
31
+ # Boolean variable for whether BuildingBlocks should attempt to render blocks as partials if a defined block cannot be found
32
+ attr_accessor :use_partials
33
+
34
+ # Boolean variable for whether BuildingBlocks should attempt to render blocks before and after blocks as partials if no before or after blocks exist
35
+ attr_accessor :use_partials_for_before_and_after_hooks
36
+
31
37
  # Checks if a particular block has been defined within the current block scope.
32
38
  # <%= blocks.defined? :some_block_name %>
33
39
  # Options:
@@ -157,6 +163,41 @@ module BuildingBlocks
157
163
  nil
158
164
  end
159
165
 
166
+ # Render a partial, treating it as a template, and any code in the block argument will impact how the template renders
167
+ # <%= BuildingBlocks::Base.new(self).render_template("shared/wizard") do |blocks| %>
168
+ # <% blocks.queue :step1 %>
169
+ # <% blocks.queue :step2 do %>
170
+ # My overridden Step 2 |
171
+ # <% end %>
172
+ # <% blocks.queue :step3 %>
173
+ # <% blocks.queue do %>
174
+ # | Anonymous Step 4
175
+ # <% end %>
176
+ # <% end %>
177
+ #
178
+ # <!-- In /app/views/shared/wizard -->
179
+ # <% blocks.define :step1 do %>
180
+ # Step 1 |
181
+ # <% end %>
182
+ #
183
+ # <% blocks.define :step2 do %>
184
+ # Step 2 |
185
+ # <% end %>
186
+ #
187
+ # <% blocks.define :step3 do %>
188
+ # Step 3
189
+ # <% end %>
190
+ #
191
+ # <% blocks.queued_blocks.each do |block| %>
192
+ # <%= blocks.render block %>
193
+ # <% end %>
194
+ #
195
+ # <!-- Will render: Step 1 | My overridden Step 2 | Step 3 | Anonymous Step 4-->
196
+ # Options:
197
+ # [+partial+]
198
+ # The partial to render as a template
199
+ # [+block+]
200
+ # An optional block with code that affects how the template renders
160
201
  def render_template(partial, &block)
161
202
  render_options = global_options.clone
162
203
  render_options[self.variable] = self
@@ -165,12 +206,78 @@ module BuildingBlocks
165
206
  view.render partial, render_options
166
207
  end
167
208
 
209
+ # Add a block to render before another block. This before block will be put into an array so that multiple
210
+ # before blocks may be queued. They will render in the order in which they are declared when the
211
+ # "blocks#render" method is called. Any options specified to the before block will override any options
212
+ # specified in the block definition.
213
+ # <% blocks.define :wizard, :option1 => 1, :option2 => 2 do |options| %>
214
+ # Step 2 (:option1 => <%= options[option1] %>, :option2 => <%= options[option2] %>)<br />
215
+ # <% end %>
216
+ #
217
+ # <% blocks.before :wizard, :option1 => 3 do
218
+ # Step 0 (:option1 => <%= options[option1] %>, :option2 => <%= options[option2] %>)<br />
219
+ # <% end %>
220
+ #
221
+ # <% blocks.before :wizard, :option2 => 4 do
222
+ # Step 1 (:option1 => <%= options[option1] %>, :option2 => <%= options[option2] %>)<br />
223
+ # <% end %>
224
+ #
225
+ # <%= blocks.use :wizard %>
226
+ #
227
+ # <!-- Will render:
228
+ # Step 0 (:option1 => 3, :option2 => 2)<br />
229
+ # Step 1 (:option1 => 1, :option2 => 4)<br />
230
+ # Step 2 (:option1 => 1, :option2 => 2)<br />
231
+ # -->
232
+ #
233
+ # <%= blocks.render :wizard, :step => @step %>
234
+ # Options:
235
+ # [+name+]
236
+ # The name of the block to render this code before when that block is rendered
237
+ # [+options+]
238
+ # Any options to specify to the before block when it renders. These will override any options
239
+ # specified when the block was defined.
240
+ # [+block+]
241
+ # The block of code to render before another block
168
242
  def before(name, options={}, &block)
169
243
  self.queue_block_container("before_#{name.to_s}", options, &block)
170
244
  nil
171
245
  end
172
246
  alias prepend before
173
247
 
248
+ # Add a block to render after another block. This after block will be put into an array so that multiple
249
+ # after blocks may be queued. They will render in the order in which they are declared when the
250
+ # "blocks#render" method is called. Any options specified to the after block will override any options
251
+ # specified in the block definition.
252
+ # <% blocks.define :wizard, :option1 => 1, :option2 => 2 do |options| %>
253
+ # Step 2 (:option1 => <%= options[option1] %>, :option2 => <%= options[option2] %>)<br />
254
+ # <% end %>
255
+ #
256
+ # <% blocks.after :wizard, :option1 => 3 do
257
+ # Step 3 (:option1 => <%= options[option1] %>, :option2 => <%= options[option2] %>)<br />
258
+ # <% end %>
259
+ #
260
+ # <% blocks.after :wizard, :option2 => 4 do
261
+ # Step 4 (:option1 => <%= options[option1] %>, :option2 => <%= options[option2] %>)<br />
262
+ # <% end %>
263
+ #
264
+ # <%= blocks.use :wizard %>
265
+ #
266
+ # <!-- Will render:
267
+ # Step 2 (:option1 => 1, :option2 => 2)<br />
268
+ # Step 3 (:option1 => 3, :option2 => 2)<br />
269
+ # Step 4 (:option1 => 1, :option2 => 4)<br />
270
+ # -->
271
+ #
272
+ # <%= blocks.render :wizard, :step => @step %>
273
+ # Options:
274
+ # [+name+]
275
+ # The name of the block to render this code after when that block is rendered
276
+ # [+options+]
277
+ # Any options to specify to the after block when it renders. These will override any options
278
+ # specified when the block was defined.
279
+ # [+block+]
280
+ # The block of code to render after another block
174
281
  def after(name, options={}, &block)
175
282
  self.queue_block_container("after_#{name.to_s}", options, &block)
176
283
  nil
@@ -210,13 +317,18 @@ module BuildingBlocks
210
317
  self.blocks = {}
211
318
  self.anonymous_block_number = 0
212
319
  self.block_groups = {}
320
+ self.use_partials = options[:use_partials].nil? ? BuildingBlocks::USE_PARTIALS : options.delete(:use_partials)
321
+ self.use_partials_for_before_and_after_hooks =
322
+ options[:use_partials_for_before_and_after_hooks] ? options.delete(:use_partials_for_before_and_after_hooks) : BuildingBlocks::USE_PARTIALS_FOR_BEFORE_AND_AFTER_HOOKS
213
323
  end
214
324
 
325
+ # Return a unique name for an anonymously defined block (i.e. a block that has not been given a name)
215
326
  def anonymous_block_name
216
327
  self.anonymous_block_number += 1
217
328
  "block_#{anonymous_block_number}"
218
329
  end
219
330
 
331
+ # Render a block, first trying to find a previously defined block with the same name
220
332
  def render_block(name_or_container, *args, &block)
221
333
  options = args.extract_options!
222
334
 
@@ -234,7 +346,7 @@ module BuildingBlocks
234
346
  block_container = blocks[name]
235
347
  args.push(global_options.merge(block_container.options).merge(block_options).merge(options))
236
348
  buffer << view.capture(*(args[0, block_container.block.arity]), &block_container.block)
237
- elsif BuildingBlocks::USE_PARTIALS
349
+ elsif use_partials
238
350
  begin
239
351
  begin
240
352
  buffer << view.render("#{name.to_s}", global_options.merge(block_options).merge(options))
@@ -253,14 +365,17 @@ module BuildingBlocks
253
365
  buffer
254
366
  end
255
367
 
368
+ # Render all the before blocks for a partial block
256
369
  def render_before_blocks(name_or_container, *args)
257
370
  render_before_or_after_blocks(name_or_container, "before", *args)
258
371
  end
259
372
 
373
+ # Render all the after blocks for a partial block
260
374
  def render_after_blocks(name_or_container, *args)
261
375
  render_before_or_after_blocks(name_or_container, "after", *args)
262
376
  end
263
377
 
378
+ # Utility method to render either the before or after blocks for a partial block
264
379
  def render_before_or_after_blocks(name_or_container, before_or_after, *args)
265
380
  options = args.extract_options!
266
381
 
@@ -282,7 +397,7 @@ module BuildingBlocks
282
397
  args_clone.push(global_options.merge(block_options).merge(block_container.options).merge(options))
283
398
  buffer << view.capture(*(args_clone[0, block_container.block.arity]), &block_container.block)
284
399
  end
285
- elsif BuildingBlocks::USE_PARTIALS && BuildingBlocks::USE_PARTIALS_FOR_BEFORE_AND_AFTER_HOOKS
400
+ elsif use_partials && use_partials_for_before_and_after_hooks
286
401
  begin
287
402
  begin
288
403
  buffer << view.render("#{before_or_after}_#{name.to_s}", global_options.merge(block_options).merge(options))
@@ -296,6 +411,7 @@ module BuildingBlocks
296
411
  buffer
297
412
  end
298
413
 
414
+ # Build a BuildingBlocks::Container object given the passed in arguments
299
415
  def build_block_container(*args, &block)
300
416
  options = args.extract_options!
301
417
  name = args.first ? args.shift : self.anonymous_block_name
@@ -306,6 +422,8 @@ module BuildingBlocks
306
422
  block_container
307
423
  end
308
424
 
425
+ # Build a BuildingBlocks::Container object and add it to an array of containers matching it's block name
426
+ # (used only for queuing a collection of before and after blocks for a particular block name)
309
427
  def queue_block_container(*args, &block)
310
428
  block_container = self.build_block_container(*args, &block)
311
429
  if blocks[block_container.name].nil?
@@ -315,6 +433,8 @@ module BuildingBlocks
315
433
  end
316
434
  end
317
435
 
436
+ # Build a BuildingBlocks::Container object and add it to the global hash of blocks if a block by the same
437
+ # name is not already defined
318
438
  def define_block_container(*args, &block)
319
439
  block_container = self.build_block_container(*args, &block)
320
440
  blocks[block_container.name] = block_container if blocks[block_container.name].nil? && block_given?
@@ -366,16 +366,25 @@ describe BuildingBlocks::Base do
366
366
  @builder.render :some_block, :value1 => 1, :value2 => 2, &block
367
367
  end
368
368
 
369
- it "should not attempt to render a partial if BuildingBlocks::USE_PARTIALS is set to false" do
370
- BuildingBlocks.send(:remove_const, "USE_PARTIALS")
371
- BuildingBlocks.const_set("USE_PARTIALS", false)
369
+ it "should not attempt to render a partial if use_partials is set to false" do
370
+ @builder.use_partials = false
371
+ block = Proc.new {|options|}
372
+ @view.expects(:render).with("some_block", :value1 => 1, :value2 => 2).never
373
+ @view.expects(:render).with("blocks/some_block", :value1 => 1, :value2 => 2).never
374
+ @view.expects(:capture).with(:value1 => 1, :value2 => 2)
375
+ @builder.render :some_block, :value1 => 1, :value2 => 2, &block
376
+ end
377
+
378
+ it "should not attempt to render a partial if use_partials is passed in as false as an option to BuildingBlocks::Base.new" do
379
+ mocha_teardown
380
+ @builder = BuildingBlocks::Base.new(@view, :use_partials => false)
381
+ @builder.expects(:render_before_blocks).at_least_once
382
+ @builder.expects(:render_after_blocks).at_least_once
372
383
  block = Proc.new {|options|}
373
384
  @view.expects(:render).with("some_block", :value1 => 1, :value2 => 2).never
374
385
  @view.expects(:render).with("blocks/some_block", :value1 => 1, :value2 => 2).never
375
386
  @view.expects(:capture).with(:value1 => 1, :value2 => 2)
376
387
  @builder.render :some_block, :value1 => 1, :value2 => 2, &block
377
- BuildingBlocks.send(:remove_const, "USE_PARTIALS")
378
- BuildingBlocks.const_set("USE_PARTIALS", true)
379
388
  end
380
389
 
381
390
  it "should override hash options for a block by merging the runtime options the define default options into the queue level options into the global options" do
@@ -410,47 +419,35 @@ describe BuildingBlocks::Base do
410
419
  @builder.render :my_before_block, 1, 2, :value3 => 3, :value4 => 4
411
420
  end
412
421
 
413
- it "should try and render a before block as a local partial if no before blocks are specified and BuildingBlocks::USE_PARTIALS_FOR_BEFORE_AND_AFTER_HOOKS is set to true" do
414
- BuildingBlocks.send(:remove_const, "USE_PARTIALS_FOR_BEFORE_AND_AFTER_HOOKS")
415
- BuildingBlocks.const_set("USE_PARTIALS_FOR_BEFORE_AND_AFTER_HOOKS", true)
422
+ it "should try and render a before block as a local partial if no before blocks are specified and use_partials_for_before_and_after_hooks is set to true" do
423
+ @builder.use_partials_for_before_and_after_hooks = true
416
424
  block = Proc.new {}
417
425
  @view.expects(:capture).never
418
426
  @view.expects(:render).with("before_my_before_block", :value1 => 1, :value2 => 2).once
419
427
  @view.expects(:render).with("blocks/before_my_before_block", :value1 => 1, :value2 => 2).never
420
428
  @builder.render :my_before_block, :value1 => 1, :value2 => 2
421
- BuildingBlocks.send(:remove_const, "USE_PARTIALS_FOR_BEFORE_AND_AFTER_HOOKS")
422
- BuildingBlocks.const_set("USE_PARTIALS_FOR_BEFORE_AND_AFTER_HOOKS", true)
423
429
  end
424
430
 
425
- it "should try and render a before block as a global partial if no after blocks are specified and the local partial does not exist and BuildingBlocks::USE_PARTIALS_FOR_BEFORE_AND_AFTER_HOOKS is set to true" do
426
- BuildingBlocks.send(:remove_const, "USE_PARTIALS_FOR_BEFORE_AND_AFTER_HOOKS")
427
- BuildingBlocks.const_set("USE_PARTIALS_FOR_BEFORE_AND_AFTER_HOOKS", true)
431
+ it "should try and render a before block as a global partial if no after blocks are specified and the local partial does not exist and use_partials_for_before_and_after_hooks is set to true" do
432
+ @builder.use_partials_for_before_and_after_hooks = true
428
433
  block = Proc.new {}
429
434
  @view.expects(:capture).never
430
435
  @view.expects(:render).with("before_my_before_block", :value1 => 1, :value2 => 2).raises(ActionView::MissingTemplate.new([],[],[],[],[]))
431
436
  @view.expects(:render).with("blocks/before_my_before_block", :value1 => 1, :value2 => 2).once
432
437
  @builder.render :my_before_block, :value1 => 1, :value2 => 2
433
- BuildingBlocks.send(:remove_const, "USE_PARTIALS_FOR_BEFORE_AND_AFTER_HOOKS")
434
- BuildingBlocks.const_set("USE_PARTIALS_FOR_BEFORE_AND_AFTER_HOOKS", false)
435
438
  end
436
439
 
437
- it "should not attempt to render a before block as a partial if BuildingBlocks::USE_PARTIALS is set to false even if BuildingBlocks::USE_PARTIALS_FOR_BEFORE_AND_AFTER_HOOKS is set to true" do
438
- BuildingBlocks.send(:remove_const, "USE_PARTIALS")
439
- BuildingBlocks.const_set("USE_PARTIALS", false)
440
- BuildingBlocks.send(:remove_const, "USE_PARTIALS_FOR_BEFORE_AND_AFTER_HOOKS")
441
- BuildingBlocks.const_set("USE_PARTIALS_FOR_BEFORE_AND_AFTER_HOOKS", true)
440
+ it "should not attempt to render a before block as a partial if use_partials is set to false even if use_partials_for_before_and_after_hooks is set to true" do
441
+ @builder.use_partials = false
442
+ @builder.use_partials_for_before_and_after_hooks = true
442
443
  block = Proc.new {}
443
444
  @view.expects(:capture).never
444
445
  @view.expects(:render).with("before_my_before_block", :value1 => 1, :value2 => 2).never
445
446
  @view.expects(:render).with("blocks/before_my_before_block", :value1 => 1, :value2 => 2).never
446
447
  @builder.render :my_before_block, :value1 => 1, :value2 => 2
447
- BuildingBlocks.send(:remove_const, "USE_PARTIALS")
448
- BuildingBlocks.const_set("USE_PARTIALS", true)
449
- BuildingBlocks.send(:remove_const, "USE_PARTIALS_FOR_BEFORE_AND_AFTER_HOOKS")
450
- BuildingBlocks.const_set("USE_PARTIALS_FOR_BEFORE_AND_AFTER_HOOKS", false)
451
448
  end
452
449
 
453
- it "should not attempt to render a before block as a partial if BuildingBlocks::USE_PARTIALS_FOR_BEFORE_AND_AFTER_HOOKS is set to false" do
450
+ it "should not attempt to render a before block as a partial if use_partials_for_before_and_after_hooks is set to false" do
454
451
  block = Proc.new {}
455
452
  @view.expects(:capture).never
456
453
  @view.expects(:render).with("before_my_before_block", :value1 => 1, :value2 => 2).never
@@ -481,47 +478,35 @@ describe BuildingBlocks::Base do
481
478
  @builder.render :my_after_block, 1, 2, :value3 => 3, :value4 => 4
482
479
  end
483
480
 
484
- it "should try and render a after block as a local partial if no after blocks are specified and BuildingBlocks::USE_PARTIALS_FOR_BEFORE_AND_AFTER_HOOKS is set to true" do
485
- BuildingBlocks.send(:remove_const, "USE_PARTIALS_FOR_BEFORE_AND_AFTER_HOOKS")
486
- BuildingBlocks.const_set("USE_PARTIALS_FOR_BEFORE_AND_AFTER_HOOKS", true)
481
+ it "should try and render a after block as a local partial if no after blocks are specified and use_partials_for_before_and_after_hooks is set to true" do
482
+ @builder.use_partials_for_before_and_after_hooks = true
487
483
  block = Proc.new {}
488
484
  @view.expects(:capture).never
489
485
  @view.expects(:render).with("after_my_after_block", :value1 => 1, :value2 => 2).once
490
486
  @view.expects(:render).with("blocks/after_my_after_block", :value1 => 1, :value2 => 2).never
491
487
  @builder.render :my_after_block, :value1 => 1, :value2 => 2
492
- BuildingBlocks.send(:remove_const, "USE_PARTIALS_FOR_BEFORE_AND_AFTER_HOOKS")
493
- BuildingBlocks.const_set("USE_PARTIALS_FOR_BEFORE_AND_AFTER_HOOKS", false)
494
488
  end
495
489
 
496
- it "should try and render a after block as a global partial if no after blocks are specified and the local partial does not exist and BuildingBlocks::USE_PARTIALS_FOR_BEFORE_AND_AFTER_HOOKS is set to true" do
497
- BuildingBlocks.send(:remove_const, "USE_PARTIALS_FOR_BEFORE_AND_AFTER_HOOKS")
498
- BuildingBlocks.const_set("USE_PARTIALS_FOR_BEFORE_AND_AFTER_HOOKS", true)
490
+ it "should try and render a after block as a global partial if no after blocks are specified and the local partial does not exist and use_partials_for_before_and_after_hooks is set to true" do
491
+ @builder.use_partials_for_before_and_after_hooks = true
499
492
  block = Proc.new {}
500
493
  @view.expects(:capture).never
501
494
  @view.expects(:render).with("after_my_after_block", :value1 => 1, :value2 => 2).raises(ActionView::MissingTemplate.new([],[],[],[],[]))
502
495
  @view.expects(:render).with("blocks/after_my_after_block", :value1 => 1, :value2 => 2).once
503
496
  @builder.render :my_after_block, :value1 => 1, :value2 => 2
504
- BuildingBlocks.send(:remove_const, "USE_PARTIALS_FOR_BEFORE_AND_AFTER_HOOKS")
505
- BuildingBlocks.const_set("USE_PARTIALS_FOR_BEFORE_AND_AFTER_HOOKS", false)
506
497
  end
507
498
 
508
- it "should not attempt to render a after block as a partial if BuildingBlocks::USE_PARTIALS is set to false even if BuildingBlocks::USE_PARTIALS_FOR_BEFORE_AND_AFTER_HOOKS is set to false" do
509
- BuildingBlocks.send(:remove_const, "USE_PARTIALS")
510
- BuildingBlocks.const_set("USE_PARTIALS", false)
511
- BuildingBlocks.send(:remove_const, "USE_PARTIALS_FOR_BEFORE_AND_AFTER_HOOKS")
512
- BuildingBlocks.const_set("USE_PARTIALS_FOR_BEFORE_AND_AFTER_HOOKS", true)
499
+ it "should not attempt to render a after block as a partial if use_partials is set to false even if use_partials_for_before_and_after_hooks is set to false" do
500
+ @builder.use_partials = false
501
+ @builder.use_partials_for_before_and_after_hooks = true
513
502
  block = Proc.new {}
514
503
  @view.expects(:capture).never
515
504
  @view.expects(:render).with("after_my_after_block", :value1 => 1, :value2 => 2).never
516
505
  @view.expects(:render).with("blocks/after_my_after_block", :value1 => 1, :value2 => 2).never
517
506
  @builder.render :my_after_block, :value1 => 1, :value2 => 2
518
- BuildingBlocks.send(:remove_const, "USE_PARTIALS")
519
- BuildingBlocks.const_set("USE_PARTIALS", true)
520
- BuildingBlocks.send(:remove_const, "USE_PARTIALS_FOR_BEFORE_AND_AFTER_HOOKS")
521
- BuildingBlocks.const_set("USE_PARTIALS_FOR_BEFORE_AND_AFTER_HOOKS", false)
522
507
  end
523
508
 
524
- it "should not attempt to render a after block as a partial if BuildingBlocks::USE_PARTIALS_FOR_BEFORE_AND_AFTER_HOOKS is set to false" do
509
+ it "should not attempt to render a after block as a partial if use_partials_for_before_and_after_hooks is set to false" do
525
510
  block = Proc.new {}
526
511
  @view.expects(:capture).never
527
512
  @view.expects(:render).with("after_my_after_block", :value1 => 1, :value2 => 2).never
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: building-blocks
3
3
  version: !ruby/object:Gem::Version
4
- hash: 29
4
+ hash: 27
5
5
  prerelease:
6
6
  segments:
7
7
  - 1
8
8
  - 2
9
- - 1
10
- version: 1.2.1
9
+ - 2
10
+ version: 1.2.2
11
11
  platform: ruby
12
12
  authors:
13
13
  - Andrew Hunter
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2012-02-07 00:00:00 -05:00
18
+ date: 2012-02-09 00:00:00 -05:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -216,6 +216,20 @@ dependencies:
216
216
  prerelease: false
217
217
  type: :development
218
218
  requirement: *id014
219
+ - !ruby/object:Gem::Dependency
220
+ name: jeweler
221
+ version_requirements: &id015 !ruby/object:Gem::Requirement
222
+ none: false
223
+ requirements:
224
+ - - ">="
225
+ - !ruby/object:Gem::Version
226
+ hash: 3
227
+ segments:
228
+ - 0
229
+ version: "0"
230
+ prerelease: false
231
+ type: :development
232
+ requirement: *id015
219
233
  description: ""
220
234
  email: hunterae@gmail.com
221
235
  executables: []