Sha256: fbcac6953f1c7454d033dd923934b7cc662f4a68f101b1b52bd475f6407de6a9

Contents?: true

Size: 1.1 KB

Versions: 1

Compression:

Stored size: 1.1 KB

Contents

module Rack
  module DevMark
    class Middleware
      include Rack::Utils
      include Rack::DevMark::Utils

      def initialize(app, theme = :github_fork_ribbon)
        @app = app
        @title = Rack::DevMark::Title.new
        @theme = theme.is_a?(Symbol) ? Rack::DevMark::Theme.const_get(camelize(theme.to_s)).new : theme
      end
      
      def call(env)
        status, headers, response = @app.call(env)

        headers = HeaderHash.new(headers)

        if headers['Content-Type'].to_s =~ %r{^text/html;}i
          begin
            response = insert_dev_marks(response)
          rescue Rack::DevMark::Exception => e
            $stderr.write "Failed to insert dev marks: #{e.message}\n"
          end
        end

        [status, headers, response]
      end

      private

      def insert_dev_marks(response)
        body = ""
        response.each do |r|
          body.concat r.to_s
        end
        body = @title.insert_into(body, Rack::DevMark.env, Rack::DevMark.revision)
        body = @theme.insert_into(body, Rack::DevMark.env, Rack::DevMark.revision)
        [body]
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
rack-dev-mark-0.1.0 lib/rack/dev-mark/middleware.rb