lib/rack/olark.rb in rack-olark-0.0.1 vs lib/rack/olark.rb in rack-olark-0.0.2
- old
+ new
@@ -1,16 +1,18 @@
require 'rack'
+require 'rack/request'
require 'haml'
module Rack
class Olark
- Defaults = {:format => :html5}
+ Defaults = {:format => :html5, :paths => []}
def initialize(app, options = {})
raise ArgumentError, "Need a valid Olark ID!" unless options[:id] and options[:id].length.eql? 16
@app, @options = app, Defaults.merge(options)
- @id, @format = [@options.delete(:id), @options.delete(:format)]
+ @id, @format, @paths = [@options.delete(:id), @options.delete(:format), @options.delete(:paths)]
+ @paths = [] unless @paths.class.eql? Array
@option_js = "olark.identify('#{@id}');"
@options.each do |key, val|
@option_js << "olark.configure('#{key.to_s}', #{[String, Symbol].include? val.class ? "'#{val.to_s}'" : val.to_s});"
end
end
@@ -19,10 +21,10 @@
dup._call(env)
end
def _call(env)
@status, @headers, @response = @app.call(env)
- return [@status, @headers, @response] unless html?
+ return [@status, @headers, @response] unless html? and (@paths.empty? or @paths.include? Rack::Request.new(env).path_info)
response = Rack::Response.new [], @status, @headers
@response.each {|fragment| response.write inject(fragment)}
response.finish
end