Sha256: b3a972dca4fa34439b0d168fc66eb234665aa3650f92773021f317485feac967

Contents?: true

Size: 1.57 KB

Versions: 19

Compression:

Stored size: 1.57 KB

Contents

require 'orange-core/core'
require 'orange-core/middleware/base'

module Orange::Middleware
  
  class Template < Base
    def init(*args)
      @core.add_pulp(Orange::Pulp::Template)
      @core.mixin(Orange::Mixins::Template)
      
    end
    
    def packet_call(packet)
      packet['template.file'] = orange.template_for packet
      status, headers, content = pass packet
      if needs_wrapped?(packet)
        content = wrap(packet, content)
        packet[:content] = content.first
        orange.fire(:wrapped, packet)
      end  
      orange.fire(:after_wrap, packet)
      packet.finish
    end
    
    def needs_wrapped?(packet)
      return false if packet.request.xhr? && !packet['template.enable'] # don't wrap xhr unless specifically asked to
      packet['template.file'] && !packet['template.disable'] 
    end
    
    def wrap(packet, content = false)
      content = packet.content unless content
      content = content.join
      content = orange[:parser].haml(packet['template.file'], packet, :wrapped_content => content, :template => true) do 
        content
      end
      [content]
    end
  end
end

module Orange::Pulp::Template
  def wrap
    packet[:content] = orange[:parser].haml(packet['template.file'], packet, :wrapped_content => packet[:content], :template => true) do
      content
    end
  end
end

module Orange::Mixins::Template
  def template_for(packet)
    template_chooser.call(packet)
  end
  def template_chooser(&block)
    if block_given?
      @template_chooser = Proc.new
    else
      @template_chooser ||= Proc.new {|packet| false}
    end
  end
end

Version data entries

19 entries across 19 versions & 2 rubygems

Version Path
orange-core-0.6.0 lib/orange-core/middleware/template.rb
orange-core-0.5.9 lib/orange-core/middleware/template.rb
orange-core-0.5.8 lib/orange-core/middleware/template.rb
orange-core-0.5.5 lib/orange-core/middleware/template.rb
orange-core-0.5.3 lib/orange-core/middleware/template.rb
orange-0.5.5 lib/orange-core/middleware/template.rb
orange-0.5.4 lib/orange-core/middleware/template.rb
orange-0.5.3 lib/orange-core/middleware/template.rb
orange-0.5.2 lib/orange-core/middleware/template.rb
orange-0.5.1 lib/orange-core/middleware/template.rb
orange-0.4.0 lib/orange-core/middleware/template.rb
orange-0.3.9 lib/orange-core/middleware/template.rb
orange-0.3.8 lib/orange-core/middleware/template.rb
orange-0.3.7 lib/orange-core/middleware/template.rb
orange-0.3.6 lib/orange-core/middleware/template.rb
orange-0.3.5 lib/orange-core/middleware/template.rb
orange-0.3.4 lib/orange-core/middleware/template.rb
orange-0.3.3 lib/orange-core/middleware/template.rb
orange-0.3.2 lib/orange-core/middleware/template.rb