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