Class: Blocks::CollectionRenderer

Inherits:
Object
  • Object
show all
Defined in:
lib/blocks/renderers/collection_renderer.rb

Class Method Summary collapse

Class Method Details

.render(runtime_context) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/blocks/renderers/collection_renderer.rb', line 5

def self.render(runtime_context)
  collection = runtime_context.collection
  if collection
    original_collection_item = runtime_context.collection_item
    original_collection_item_index = runtime_context.collection_item_index
    original_runtime_args = runtime_context.runtime_args
    collection.each_with_index do |item, index|
      runtime_context.collection_item = item
      runtime_context.collection_item_index = index

      if Blocks.collection_item_passed_to_block_as_first_arg
        runtime_context.runtime_args = [item, *original_runtime_args]
      end

      yield runtime_context
    end
    runtime_context.collection_item = original_collection_item
    runtime_context.collection_item_index = original_collection_item_index
    runtime_context.runtime_args = original_runtime_args
  else
    yield runtime_context
  end
end