blocks 2.7.0 → 2.8.0

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
- MWI0ZTBkM2RiYWJjMzkxM2NiNTQ0NDEyYjY5MzIyNjI0YWNlMTZmNQ==
4
+ MzIxNTRkM2MxYWIwMjZmYWNiZmU5MWFmMGNkODU4ZDIyM2RmNmE2Yw==
5
5
  data.tar.gz: !binary |-
6
- NmFiNDE4Yjg5OTBiYTg5YmQwZTQxZWU1ZmEzOGQ2ZjIzNDNhYWQzYg==
6
+ NmRhYjAwZmFlNGE3YTQ2MGYxNWNmMzEwOGU3NDFkNWJhNGFlNDNiZQ==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- ZjAyM2ZjYWZmMzc1MDM1ZjkyY2FmMTdhYTYyOTk0OTgwMzBhMmRmNDJhMjdi
10
- ZWE0NDFkZDM2NjVjYTgxZWRjNjVlYTUyNjZkMTlhMTk1YWUzMWIzMDkwN2M1
11
- N2IyYjQ3NDU2MWIyMGVkYWZkMDA4YTEzOGNlMjgzNzAzNDY5YzA=
9
+ ZDc0ODgzNDM4Njg0YTY3NDM0NWQ1YmQyMGQwNGM1ZGVhZTM0YjFlNmUyZmE4
10
+ ZDQwMjg0NzE4NzljMmVjZDE0MTc3YTkyODk3Nzk1NjkxOGNjNmZhNGRhMjI2
11
+ MjI4NGUwNmU2MjQ1MDE3MjFmMGI2MDZjMTI4MzE4NTliNjhmNjU=
12
12
  data.tar.gz: !binary |-
13
- M2MyNmEwMTMwNzllYjZlZWVkNjQ2MGE2MWIyMDNmYzI5NGNkMDQ1ODU3NTFj
14
- YTJhZjk0YjgwYThiM2I5MjA5M2E2ZTdiZTIwOWFjODYzMzRhZjQ1MTk1Nzgw
15
- Y2QxNzYyN2EzOWFiNzU0NGRkZGYzN2YyYzMzOTIwYTc2ZWMzYjk=
13
+ OTdlYmUwMjRhMTcwMzdmZGY5NDkyMjE4YjY5MTlhNWYxZDg0NDUxMjJiMjky
14
+ NWFiOTNlMDA0OGIwZDZiNDMxMmNiNjc2MDgwMDdjMGIyNDg3ZTZkMDI4OTJi
15
+ Yjg3YTc4ODA5ODI3MTFiMDA0MWJhMzRlMDBmNDRjZGVlZDdlNjA=
@@ -1,3 +1,11 @@
1
+ 2.8.0 (January 21, 2016)
2
+ * When rendering a collection of blocks through blocks.render BLOCK_NAME, collection: COLLECTION,
3
+ current_index will now be passed as a param for the options hash passed to the block. Example:
4
+ <% blocks.define :my_block do |object, options| %>
5
+ Item <%= options[:current_index] + 1 %>: <%= object %>
6
+ <% end %>
7
+ <%= blocks.render :my_block, collection: ["a", "b", "c"] %>
8
+
1
9
  2.7.0 (December 9, 2015)
2
10
  * Added configuration option skip_applies_to_surrounding_blocks. When set to true, if blocks.skip :SOME_BLOCK is called,
3
11
  any before, after, and around hooks applied to that block will also be skipped when the block attempts to render.
@@ -165,10 +165,11 @@ module Blocks
165
165
  wrap_each = options.delete(:wrap_each) || {}
166
166
 
167
167
  buffer = content_tag_with_block(wrap_with[:tag], wrap_with.except(:tag), *args) do
168
- collection.each do |object|
168
+ collection.each_with_index do |object, index|
169
169
  cloned_args = args.clone
170
170
  cloned_args.unshift(object)
171
171
  cloned_options = options.clone
172
+ cloned_options[:current_index] = index
172
173
  cloned_options = cloned_options.merge(object.options) if object.is_a?(Blocks::Container)
173
174
  cloned_args.push(cloned_options)
174
175
 
@@ -1,3 +1,3 @@
1
1
  module Blocks
2
- VERSION = "2.7.0"
2
+ VERSION = "2.8.0"
3
3
  end
@@ -15,8 +15,8 @@ describe Blocks::Base do
15
15
  @builder.expects(:render_before_blocks).at_least_once
16
16
  @builder.expects(:render_after_blocks).at_least_once
17
17
  # @view.expects(:capture).with(:value1 => 1, :value2 => 2).never
18
- @view.expects(:render).with("some_block", 'partials_folder' => 'shared', 'wrap_before_and_after_blocks' => false, 'use_partials' => true, 'skip_applies_to_surrounding_blocks' => true, 'value1' => 1, 'value2' => 2).raises(ActionView::MissingTemplate.new([],[],[],[],[]))
19
- @view.expects(:render).with("shared/some_block", 'partials_folder' => 'shared', 'wrap_before_and_after_blocks' => false, 'use_partials' => true, 'skip_applies_to_surrounding_blocks' => true, 'value1' => 1, 'value2' => 2).once
18
+ @view.expects(:render).with("some_block", 'partials_folder' => 'shared', 'wrap_before_and_after_blocks' => false, 'use_partials' => true, 'skip_applies_to_surrounding_blocks' => false, 'value1' => 1, 'value2' => 2).raises(ActionView::MissingTemplate.new([],[],[],[],[]))
19
+ @view.expects(:render).with("shared/some_block", 'partials_folder' => 'shared', 'wrap_before_and_after_blocks' => false, 'use_partials' => true, 'skip_applies_to_surrounding_blocks' => false, 'value1' => 1, 'value2' => 2).once
20
20
  @builder.render :some_block, :value1 => 1, :value2 => 2
21
21
  end
22
22
 
@@ -299,7 +299,7 @@ describe Blocks::Base do
299
299
  it "should automatically pass in an options hash to a defined block that takes one paramter when that block is rendered" do
300
300
  block = Proc.new {|options| print_hash(options) }
301
301
  @builder.define :some_block, &block
302
- @builder.render(:some_block).should eql print_hash(:wrap_before_and_after_blocks => false, :use_partials => false, :partials_folder => "blocks", :skip_applies_to_surrounding_blocks => true)
302
+ @builder.render(:some_block).should eql print_hash(:wrap_before_and_after_blocks => false, :use_partials => false, :partials_folder => "blocks", :skip_applies_to_surrounding_blocks => false)
303
303
  end
304
304
 
305
305
  it "should be able to render a defined block by its name and pass in runtime arguments as a hash" do
@@ -307,7 +307,7 @@ describe Blocks::Base do
307
307
  print_hash(options)
308
308
  end
309
309
  @builder.define :some_block, &block
310
- @builder.render(:some_block, :param1 => 1, :param2 => "value2").should eql print_hash(:wrap_before_and_after_blocks => false, :use_partials => false, :partials_folder => "blocks", :skip_applies_to_surrounding_blocks => true, :param1 => 1, :param2 => "value2")
310
+ @builder.render(:some_block, :param1 => 1, :param2 => "value2").should eql print_hash(:wrap_before_and_after_blocks => false, :use_partials => false, :partials_folder => "blocks", :skip_applies_to_surrounding_blocks => false, :param1 => 1, :param2 => "value2")
311
311
  end
312
312
 
313
313
  it "should be able to render a defined block by its name and pass in runtime arguments one by one" do
@@ -315,7 +315,7 @@ describe Blocks::Base do
315
315
  "first_param: #{first_param}, second_param: #{second_param}, #{print_hash options}"
316
316
  end
317
317
  @builder.define :some_block, &block
318
- @builder.render(:some_block, 3, 4, :param1 => 1, :param2 => "value2").should eql("first_param: 3, second_param: 4, #{print_hash(:wrap_before_and_after_blocks => false, :use_partials => false, :partials_folder => "blocks", :skip_applies_to_surrounding_blocks => true, :param1 => 1, :param2 => "value2")}")
318
+ @builder.render(:some_block, 3, 4, :param1 => 1, :param2 => "value2").should eql("first_param: 3, second_param: 4, #{print_hash(:wrap_before_and_after_blocks => false, :use_partials => false, :partials_folder => "blocks", :skip_applies_to_surrounding_blocks => false, :param1 => 1, :param2 => "value2")}")
319
319
  end
320
320
 
321
321
  it "should match up the number of arguments to a defined block with the parameters passed when a block is rendered" do
@@ -331,7 +331,7 @@ describe Blocks::Base do
331
331
  "first_param: #{first_param}, second_param: #{second_param}, #{print_hash options}"
332
332
  end
333
333
  @builder.replace :some_block, &block
334
- @builder.render(:some_block, 3, 4, :param1 => 1, :param2 => "value2").should eql("first_param: 3, second_param: 4, #{print_hash(:wrap_before_and_after_blocks => false, :use_partials => false, :partials_folder => "blocks", :skip_applies_to_surrounding_blocks => true, :param1 => 1, :param2 => "value2")}")
334
+ @builder.render(:some_block, 3, 4, :param1 => 1, :param2 => "value2").should eql("first_param: 3, second_param: 4, #{print_hash(:wrap_before_and_after_blocks => false, :use_partials => false, :partials_folder => "blocks", :skip_applies_to_surrounding_blocks => false, :param1 => 1, :param2 => "value2")}")
335
335
  end
336
336
 
337
337
  it "should not render anything if using a block that has been defined" do
@@ -339,8 +339,8 @@ describe Blocks::Base do
339
339
  config.use_partials = true
340
340
  end
341
341
  @builder = Blocks::Base.new(@view)
342
- @view.expects(:render).with("some_block", 'partials_folder' => 'blocks', 'wrap_before_and_after_blocks' => false, 'use_partials' => true, 'skip_applies_to_surrounding_blocks' => true).raises(ActionView::MissingTemplate.new([],[],[],[],[]))
343
- @view.expects(:render).with("blocks/some_block", 'partials_folder' => 'blocks', 'wrap_before_and_after_blocks' => false, 'use_partials' => true, 'skip_applies_to_surrounding_blocks' => true).raises(ActionView::MissingTemplate.new([],[],[],[],[]))
342
+ @view.expects(:render).with("some_block", 'partials_folder' => 'blocks', 'wrap_before_and_after_blocks' => false, 'use_partials' => true, 'skip_applies_to_surrounding_blocks' => false).raises(ActionView::MissingTemplate.new([],[],[],[],[]))
343
+ @view.expects(:render).with("blocks/some_block", 'partials_folder' => 'blocks', 'wrap_before_and_after_blocks' => false, 'use_partials' => true, 'skip_applies_to_surrounding_blocks' => false).raises(ActionView::MissingTemplate.new([],[],[],[],[]))
344
344
  @builder.render :some_block
345
345
  end
346
346
 
@@ -357,8 +357,8 @@ describe Blocks::Base do
357
357
  config.use_partials = true
358
358
  end
359
359
  @builder = Blocks::Base.new(@view)
360
- @view.expects(:render).with("some_block", 'partials_folder' => 'blocks', 'wrap_before_and_after_blocks' => false, 'use_partials' => true, 'skip_applies_to_surrounding_blocks' => true, 'value1' => 1, 'value2' => 2).once
361
- @view.expects(:render).with("blocks/some_block", 'partials_folder' => 'blocks', 'wrap_before_and_after_blocks' => false, 'use_partials' => true, 'skip_applies_to_surrounding_blocks' => true, 'value1' => 1, 'value2' => 2).never
360
+ @view.expects(:render).with("some_block", 'partials_folder' => 'blocks', 'wrap_before_and_after_blocks' => false, 'use_partials' => true, 'skip_applies_to_surrounding_blocks' => false, 'value1' => 1, 'value2' => 2).once
361
+ @view.expects(:render).with("blocks/some_block", 'partials_folder' => 'blocks', 'wrap_before_and_after_blocks' => false, 'use_partials' => true, 'skip_applies_to_surrounding_blocks' => false, 'value1' => 1, 'value2' => 2).never
362
362
  @builder.render :some_block, :value1 => 1, :value2 => 2
363
363
  end
364
364
 
@@ -367,8 +367,8 @@ describe Blocks::Base do
367
367
  config.use_partials = true
368
368
  end
369
369
  @builder = Blocks::Base.new(@view)
370
- @view.expects(:render).with("some_block", 'partials_folder' => 'blocks', 'wrap_before_and_after_blocks' => false, 'use_partials' => true, 'skip_applies_to_surrounding_blocks' => true, 'value1' => 1, 'value2' => 2).raises(ActionView::MissingTemplate.new([],[],[],[],[]))
371
- @view.expects(:render).with("blocks/some_block", 'partials_folder' => 'blocks', 'wrap_before_and_after_blocks' => false, 'use_partials' => true, 'skip_applies_to_surrounding_blocks' => true, 'value1' => 1, 'value2' => 2).once
370
+ @view.expects(:render).with("some_block", 'partials_folder' => 'blocks', 'wrap_before_and_after_blocks' => false, 'use_partials' => true, 'skip_applies_to_surrounding_blocks' => false, 'value1' => 1, 'value2' => 2).raises(ActionView::MissingTemplate.new([],[],[],[],[]))
371
+ @view.expects(:render).with("blocks/some_block", 'partials_folder' => 'blocks', 'wrap_before_and_after_blocks' => false, 'use_partials' => true, 'skip_applies_to_surrounding_blocks' => false, 'value1' => 1, 'value2' => 2).once
372
372
  @builder.render :some_block, :value1 => 1, :value2 => 2
373
373
  end
374
374
 
@@ -381,8 +381,8 @@ describe Blocks::Base do
381
381
  config.use_partials = true
382
382
  end
383
383
  @builder = Blocks::Base.new(@view)
384
- @view.expects(:render).with("some_block", 'partials_folder' => 'blocks', 'wrap_before_and_after_blocks' => false, 'use_partials' => true, 'skip_applies_to_surrounding_blocks' => true, 'value1' => 1, 'value2' => 2).raises(ActionView::MissingTemplate.new([],[],[],[],[]))
385
- @view.expects(:render).with("blocks/some_block", 'partials_folder' => 'blocks', 'wrap_before_and_after_blocks' => false, 'use_partials' => true, 'skip_applies_to_surrounding_blocks' => true, 'value1' => 1, 'value2' => 2).raises(ActionView::MissingTemplate.new([],[],[],[],[]))
384
+ @view.expects(:render).with("some_block", 'partials_folder' => 'blocks', 'wrap_before_and_after_blocks' => false, 'use_partials' => true, 'skip_applies_to_surrounding_blocks' => false, 'value1' => 1, 'value2' => 2).raises(ActionView::MissingTemplate.new([],[],[],[],[]))
385
+ @view.expects(:render).with("blocks/some_block", 'partials_folder' => 'blocks', 'wrap_before_and_after_blocks' => false, 'use_partials' => true, 'skip_applies_to_surrounding_blocks' => false, 'value1' => 1, 'value2' => 2).raises(ActionView::MissingTemplate.new([],[],[],[],[]))
386
386
  @builder.render :some_block, :value1 => 1, :value2 => 2, &block
387
387
  end
388
388
 
@@ -391,8 +391,8 @@ describe Blocks::Base do
391
391
  options[:value1].should eql 1
392
392
  options[:value2].should eql 2
393
393
  end
394
- @view.expects(:render).with("some_block", 'partials_folder' => 'blocks', 'wrap_before_and_after_blocks' => false, 'use_partials' => false, 'skip_applies_to_surrounding_blocks' => true, 'value1' => 1, 'value2' => 2).never
395
- @view.expects(:render).with("blocks/some_block", 'partials_folder' => 'blocks', 'wrap_before_and_after_blocks' => false, 'use_partials' => false, 'skip_applies_to_surrounding_blocks' => true, 'value1' => 1, 'value2' => 2).never
394
+ @view.expects(:render).with("some_block", 'partials_folder' => 'blocks', 'wrap_before_and_after_blocks' => false, 'use_partials' => false, 'skip_applies_to_surrounding_blocks' => false, 'value1' => 1, 'value2' => 2).never
395
+ @view.expects(:render).with("blocks/some_block", 'partials_folder' => 'blocks', 'wrap_before_and_after_blocks' => false, 'use_partials' => false, 'skip_applies_to_surrounding_blocks' => false, 'value1' => 1, 'value2' => 2).never
396
396
  @builder.render :some_block, :value1 => 1, :value2 => 2, &block
397
397
  end
398
398
 
@@ -405,8 +405,8 @@ describe Blocks::Base do
405
405
  options[:value1].should eql 1
406
406
  options[:value2].should eql 2
407
407
  end
408
- @view.expects(:render).with("some_block", 'partials_folder' => 'blocks', 'wrap_before_and_after_blocks' => false, 'use_partials' => false, 'skip_applies_to_surrounding_blocks' => true, 'value1' => 1, 'value2' => 2).never
409
- @view.expects(:render).with("blocks/some_block", 'partials_folder' => 'blocks', 'wrap_before_and_after_blocks' => false, 'use_partials' => false, 'skip_applies_to_surrounding_blocks' => true, 'value1' => 1, 'value2' => 2).never
408
+ @view.expects(:render).with("some_block", 'partials_folder' => 'blocks', 'wrap_before_and_after_blocks' => false, 'use_partials' => false, 'skip_applies_to_surrounding_blocks' => false, 'value1' => 1, 'value2' => 2).never
409
+ @view.expects(:render).with("blocks/some_block", 'partials_folder' => 'blocks', 'wrap_before_and_after_blocks' => false, 'use_partials' => false, 'skip_applies_to_surrounding_blocks' => false, 'value1' => 1, 'value2' => 2).never
410
410
  @builder.render :some_block, :value1 => 1, :value2 => 2, &block
411
411
  end
412
412
 
@@ -446,6 +446,12 @@ describe Blocks::Base do
446
446
  @builder.render(:some_block, :collection => [1,2,3]).should eql "output1 output2 output3 "
447
447
  end
448
448
 
449
+ it "should track the current index and pass as an option to the block" do
450
+ block = Proc.new {|item, options| "Item #{options[:current_index] + 1}: #{item} "}
451
+ @builder.define :some_block, &block
452
+ @builder.render(:some_block, :collection => ["a", "b", "c"]).should eql "Item 1: a Item 2: b Item 3: c "
453
+ end
454
+
449
455
  it "should render a block for each element of the collection with the 'as' option specifying the name of the element passed into the block" do
450
456
  block = Proc.new {|item, options| "output#{options[:my_block_name]} "}
451
457
  @builder.define :some_block, &block
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: blocks
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.7.0
4
+ version: 2.8.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew Hunter
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-12-09 00:00:00.000000000 Z
11
+ date: 2016-01-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails