class Blocks::CollectionRenderer

Public Class Methods

render(runtime_context) { |runtime_context| ... } click to toggle source
# 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