Sha256: 593d40a59d7183cb50aa4ce68d8a97d7c540ef7a3b77f1004ca6c44c3c540842

Contents?: true

Size: 1.41 KB

Versions: 1

Compression:

Stored size: 1.41 KB

Contents

module HtmlCompressor

  class Rack

      def initialize app
        @app = app

        @compressor = HtmlCompressor::Compressor.new(
          :enabled => true,
          :remove_multi_spaces => true,
          :remove_comments => true,
          :remove_intertag_spaces => true,
          :remove_quotes => true,
          :compress_css => false,
          :compress_javascript => false,
          :simple_doctype => false,
          :remove_script_attributes => true,
          :remove_style_attributes => true,
          :remove_link_attributes => true,
          :remove_form_attributes => false,
          :remove_input_attributes => true,
          :remove_javascript_protocol => true,
          :remove_http_protocol => true,
          :remove_https_protocol => false,
          :preserve_line_breaks => false,
          :simple_boolean_attributes => true
        )

      end

      def call env
        status, headers, body = @app.call(env)

        if headers.key? 'Content-Type' and headers['Content-Type'] =~ /html/
          content = ''

          body.each do |part|
            content << part
          end

          content = @compressor.compress(content)
          headers['Content-Length'] = content.length.to_s if headers['Content-Length']

          [status, headers, [content]]
        else
          [status, headers, body]
        end
      ensure
        body.close if body.respond_to?(:close)
      end

  end

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
htmlcompressor-0.0.2 lib/htmlcompressor/rack.rb