Module: Tight::Engine::Defer
- Defined in:
- lib/tight-engine/defer.rb
Instance Method Summary collapse
- #defer_element(name, args, opts) ⇒ Object
- #placeholders ⇒ Object
- #process_deferred_elements(text) ⇒ Object
Instance Method Details
#defer_element(name, args, opts) ⇒ Object
8 9 10 11 12 13 14 15 |
# 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 ⇒ Object
4 5 6 |
# File 'lib/tight-engine/defer.rb', line 4 def placeholders @placeholders ||= {} end |
#process_deferred_elements(text) ⇒ Object
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
# 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 |