Module: Tight::Engine::Defer

Defined in:
lib/tight-engine/defer.rb

Instance Method Summary collapse

Instance Method Details

#defer_element(name, args, opts) ⇒ Object



8
9
10
11
12
# File 'lib/tight-engine/defer.rb', line 8

def defer_element( name, args, opts )
  return unless settings.deferred_elements.include?(name)
  placeholders[name] = [ name, args, opts ]
  "%{placeholder[:#{name}]}"
end

#placeholdersObject



4
5
6
# File 'lib/tight-engine/defer.rb', line 4

def placeholders
  @placeholders ||= {}
end

#process_deferred_elements(text) ⇒ Object



14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/tight-engine/defer.rb', line 14

def process_deferred_elements( text )
  text.to_str.gsub /(\s*)\%\{placeholder\[\:([^\]]+)\]\}/ do
    if deferred = placeholders[$2]
      output = process_element *deferred
      if engine.pretty?
        $1+output.gsub(/\r|\n|\r\n/, $1)+$1
      else
        output
      end  
    else
     ''
    end
  end
end