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