module Aerogel::Render::OutputBuffer

Public Class Methods

block_is_erb?( block ) click to toggle source

Returns true if block is defined within a ERb template.

# File lib/aerogel/core/render/output_buffer.rb, line 48
def self.block_is_erb?( block )
  !@buffer.nil? || block && eval('defined? __in_erb_template', block.binding)
end
block_is_haml?( block ) click to toggle source

Returns true if block is defined within a ERb template.

# File lib/aerogel/core/render/output_buffer.rb, line 54
def self.block_is_haml?( block )
  block && eval('block_is_haml?(self)', block.binding)
end
block_is_template?( block ) click to toggle source

Returns true if block is defined within any template.

# File lib/aerogel/core/render/output_buffer.rb, line 60
def self.block_is_template?( block )
  block && ( block_is_erb?(block) || block_is_haml?( block ) )
end
buffer() click to toggle source

Returns instance of a string buffer

# File lib/aerogel/core/render/output_buffer.rb, line 9
def self.buffer
  @buffer
end
buffer=( text ) click to toggle source

Sets instance of a string buffer

# File lib/aerogel/core/render/output_buffer.rb, line 15
def self.buffer=( text )
  @buffer = text
end
capture(*args) { |*args| ... } click to toggle source

Executes block and captures content rendered into buffer. If no content is rendered into buffer, returns block yield result as a content.

# File lib/aerogel/core/render/output_buffer.rb, line 39
def self.capture(*args, &block)
  self.push
  blk_result = yield *args
  buf_result = self.pop
  buf_result.nil? || buf_result.empty? ? blk_result : buf_result
end
pop() click to toggle source

Returns current buffer contents as a string and restores previous buffer state from a stack.

# File lib/aerogel/core/render/output_buffer.rb, line 30
def self.pop
  result = @buffer
  @buffer = @buffer_stack.shift
  result
end
push() click to toggle source

Saves current buffer in a stack and creates a new empty one.

# File lib/aerogel/core/render/output_buffer.rb, line 21
def self.push
  @buffer_stack ||= []
  @buffer_stack.unshift @buffer
  @buffer = ''
end