module Tight::Engine::Defer

Public Instance Methods

defer_element(name, args, opts) click to toggle source
# File lib/tight-engine/defer.rb, line 8
def defer_element(name, args, opts)
  if settings.respond_to?(:deferred_elements) && settings.deferred_elements.include?(name)
    placeholders[name] = [ name, args, opts ]
    "%{placeholder[:#{name}]}"
  else
    process_element(name, args, opts)
  end
end
placeholders() click to toggle source
# File lib/tight-engine/defer.rb, line 4
def placeholders
  @placeholders ||= {}
end
process_deferred_elements( text ) click to toggle source
# File lib/tight-engine/defer.rb, line 17
def process_deferred_elements( text )
  text.to_str.gsub /(\s*)\%\{placeholder\[\:([^\]]+)\]\}/ do
    if deferred = placeholders[$2]
      output = process_element(*deferred)
      if engine.pretty?
        # $/ is magic for CR/LF/CRLF
        indent = $/ + $1
        $1 + output.gsub(/\r|\n|\r\n/, indent) + indent
      else
        output
      end  
    else
      "#{$1}%{placeholder[:#{$2}]}"
    end
  end
end