lib/middleman/core_extensions/sprockets.rb



require "sprockets"
  
module Middleman::CoreExtensions::Sprockets
  class << self
    def registered(app)
      app.set :js_compressor, false

      app.after_configuration do
        app.map "/#{app.js_dir}" do
          run Middleman::CoreExtensions::Sprockets::JavascriptEnvironment.new(app)
        end
        
        # app.map "/#{app.css_dir}" do
        #   run Middleman::CoreExtensions::Sprockets::StylesheetEnvironment.new(app)
        # end
      end
    end
    alias :included :registered
  end

  class MiddlemanEnvironment < ::Sprockets::Environment
    def initialize(app)
      full_path = app.views
      full_path = File.join(app.root, app.views) unless app.views.include?(app.root)
      
      super File.expand_path(full_path)
    end
  end
    
  class JavascriptEnvironment < MiddlemanEnvironment
    def initialize(app)
      super

      # Disable css
      unregister_processor "text/css", ::Sprockets::DirectiveProcessor
      
      self.js_compressor = app.settings.js_compressor

      # configure search paths
      append_path app.js_dir
      
      # jQuery for Sprockets
      # begin
      #   require "jquery-rails"
      #   jquery-rails / vendor / assets / javascripts
      # rescue LoadError
      # end
    end
    
    def javascript_exception_response(exception)
      expire_index!
      super(exception)
    end
  end
  
  # class StylesheetEnvironment < MiddlemanEnvironment
  #   def initialize(app)
  #     super
  # 
  #     # Disable js
  #     unregister_processor "application/javascript", ::Sprockets::DirectiveProcessor
  # 
  #     # configure search paths
  #     stylesheets_path = File.join(File.expand_path(app.views), app.css_dir)
  #     append_path stylesheets_path
  #   end
  #
  #   def css_exception_response(exception)
  #     expire_index!
  #     super(exception)
  #   end
  # end
end