Sha256: ec4d575e94a6c97abff684a10f84ebc0567b3503454752a033a57dedb4e64aa2

Contents?: true

Size: 1.14 KB

Versions: 40

Compression:

Stored size: 1.14 KB

Contents

module Middleman::Features::MinifyJavascript
  class << self
    def registered(app)
      require 'uglifier'
      app.set :js_compressor, ::Uglifier.new
      app.use InlineJavascriptRack
    end
    alias :included :registered
  end

  class InlineJavascriptRack
    def initialize(app, options={})
      @app = app
    end

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

      if env["PATH_INFO"].match(/\.html$/)
        compressor = ::Uglifier.new

        if response.is_a?(::Rack::File) or response.is_a?(::Sinatra::Helpers::StaticFile)
          uncompressed_source = File.read(response.path)
        else
          uncompressed_source = response.join
        end

        minified = uncompressed_source.gsub(/(<scri.*?\/\/<!\[CDATA\[\n)(.*?)(\/\/\]\].*?<\/script>)/m) do |m|
          first = $1
          uncompressed_source = $2
          last = $3
          minified_js = compressor.compile(uncompressed_source)

          first << minified_js << "\n" << last
        end
        headers["Content-Length"] = ::Rack::Utils.bytesize(minified).to_s
        response = [minified]
      end

      [status, headers, response]
    end
  end
end

Version data entries

40 entries across 40 versions & 1 rubygems

Version Path
middleman-2.0.11 lib/middleman/features/minify_javascript.rb
middleman-2.0.11-x86-mingw32 lib/middleman/features/minify_javascript.rb
middleman-2.0.10-x86-mingw32 lib/middleman/features/minify_javascript.rb
middleman-2.0.10 lib/middleman/features/minify_javascript.rb
middleman-2.0.9-x86-mingw32 lib/middleman/features/minify_javascript.rb
middleman-2.0.9 lib/middleman/features/minify_javascript.rb
middleman-2.0.9.pre.3-x86-mingw32 lib/middleman/features/minify_javascript.rb
middleman-2.0.9.pre.3 lib/middleman/features/minify_javascript.rb
middleman-2.0.9.pre.2-x86-mingw32 lib/middleman/features/minify_javascript.rb
middleman-2.0.9.pre.2 lib/middleman/features/minify_javascript.rb
middleman-2.0.9.pre-x86-mswin32 lib/middleman/features/minify_javascript.rb
middleman-2.0.9.pre lib/middleman/features/minify_javascript.rb
middleman-2.0.8 lib/middleman/features/minify_javascript.rb
middleman-2.0.7 lib/middleman/features/minify_javascript.rb
middleman-2.0.6 lib/middleman/features/minify_javascript.rb
middleman-2.0.5 lib/middleman/features/minify_javascript.rb
middleman-2.0.4 lib/middleman/features/minify_javascript.rb
middleman-2.0.3 lib/middleman/features/minify_javascript.rb
middleman-2.0.2 lib/middleman/features/minify_javascript.rb
middleman-2.0.1.1 lib/middleman/features/minify_javascript.rb