Class: Rack::Lacquer

Inherits:
Object
  • Object
show all
Defined in:
lib/rack/lacquer.rb

Instance Method Summary collapse

Constructor Details

#initialize(app) ⇒ Lacquer

Returns a new instance of Lacquer.



4
5
6
# File 'lib/rack/lacquer.rb', line 4

def initialize app
  @app = app
end

Instance Method Details

#call(env) ⇒ Object



8
9
10
11
12
# File 'lib/rack/lacquer.rb', line 8

def call env
  status, headers, response = @app.call env
  response.map! { |part| process_includes part, env } if headers['Content-Type'] =~ /text\/html/ && response.respond_to?( :map! )
  [status, headers, response]
end

#process_includes(part, env) ⇒ Object



14
15
16
17
18
19
20
21
22
# File 'lib/rack/lacquer.rb', line 14

def process_includes part, env
  document = Nokogiri::HTML part.to_s
  document.css('include').each do |esi|
    include_status, include_headers, include_response = @app.call env.merge 'PATH_INFO' => esi['src'], 'REQUEST_URI' => esi['src']
    esi.after include_response.join
    esi.remove
  end
  document.to_s
end