Sha256: 9597070155d42ba8c426ad9e50e4e3fc5045856fec471e97eb6178b1d1e44725

Contents?: true

Size: 1.63 KB

Versions: 1

Compression:

Stored size: 1.63 KB

Contents

begin
  require 'sprockets'
  require 'middleman/rack/sprockets+ruby19' # Sprockets ruby 1.9 duckpunch
  
rescue LoadError
  puts "Sprockets not available. Install it with: gem install sprockets"
end

begin
  require "yui/compressor"
rescue LoadError
  puts "YUI-Compressor not available. Install it with: gem install yui-compressor"
end
  
module Middleman
  module Rack
    class Sprockets
      def initialize(app, options={})
        @app = app
      end

      def call(env)
        path   = env["PATH_INFO"]
        source = File.join(Middleman::Base.views, path)
            
        if path.match(/\.js$/)
          if File.exists?(source)
            secretary = ::Sprockets::Secretary.new( :root   => Middleman::Base.root,
                                                    :source_files => [ File.join("views", path) ],
                                                    :load_path    => [ File.join("public", Middleman::Base.js_dir),
                                                                       File.join("views", Middleman::Base.js_dir) ])
          
            result = secretary.concatenation.to_s
          else
            result = File.read(File.join(Middleman::Base.public, path))
          end
          
          
          if Middleman::Base.respond_to?(:minify_javascript?) && Middleman::Base.minify_javascript?
            compressor = ::YUI::JavaScriptCompressor.new(:munge => true)
            result = compressor.compress(result)
          end

          [200, { "Content-Type" => "text/javascript" }, [result]]
        else
          @app.call(env)
        end
      end
    end
  end
end

Middleman::Base.supported_formats << "js"

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
middleman-0.12.0.pre lib/middleman/rack/sprockets.rb