Class: Blocks::BlockWithHooksRenderer

Inherits:
AbstractRenderer show all
Defined in:
lib/blocks/renderers/block_with_hooks_renderer.rb

Overview

TODO: Make this render order customizable

Constant Summary

Constants inherited from AbstractRenderer

AbstractRenderer::RENDERERS

Instance Attribute Summary

Attributes inherited from AbstractRenderer

#main_renderer

Instance Method Summary collapse

Methods inherited from AbstractRenderer

#capture, #initialize

Constructor Details

This class inherits a constructor from Blocks::AbstractRenderer

Instance Method Details

#render(*args, &default_definition) ⇒ Object



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/blocks/renderers/block_with_hooks_renderer.rb', line 4

def render(*args, &default_definition)
  with_output_buffer do
    runtime_context = RuntimeContext.new(builder, *args, &default_definition)
    if !runtime_context.skip_completely
      adjacent_blocks_renderer.render(HookDefinition::BEFORE_ALL, runtime_context)
      nesting_blocks_renderer.render(HookDefinition::AROUND_ALL, runtime_context) do
        wrapper_renderer.render(runtime_context.wrap_all, runtime_context) do
          collection_renderer.render(runtime_context) do |runtime_context|
            wrapper_renderer.render(runtime_context.wrap_each, runtime_context) do
              nesting_blocks_renderer.render(HookDefinition::AROUND, runtime_context) do
                adjacent_blocks_renderer.render(HookDefinition::BEFORE, runtime_context)
                if !runtime_context.skip_content
                  wrapper_renderer.render(runtime_context.wrap_with, runtime_context) do
                    nesting_blocks_renderer.render(HookDefinition::SURROUND, runtime_context) do
                      adjacent_blocks_renderer.render(HookDefinition::PREPEND, runtime_context)
                      block_renderer.render(runtime_context)
                      adjacent_blocks_renderer.render(HookDefinition::APPEND, runtime_context)
                    end
                  end
                end
                adjacent_blocks_renderer.render(HookDefinition::AFTER, runtime_context)
              end
            end
          end
        end
      end
      adjacent_blocks_renderer.render(HookDefinition::AFTER_ALL, runtime_context)
    end
  end
end