Sha256: 25be782e34369e3553a8972bd6586d806d2f7e0d672346d5dcced688ff2edf4c

Contents?: true

Size: 1.43 KB

Versions: 5

Compression:

Stored size: 1.43 KB

Contents

require "sprockets"
require "sprockets-sass"
require "sass"

module Middleman::Renderers::Sass
  class << self
    def registered(app)
      # Default sass options
      app.set :sass, {}
    end
    alias :included :registered
  end
  
  class SassPlusCSSFilenameTemplate < ::Sprockets::Sass::SassTemplate
    # Add exception messaging
    def evaluate(context, locals, &block)
      begin
        super
      rescue Sass::SyntaxError => e
        Sass::SyntaxError.exception_to_css(e, :full_exception => true)
      end
    end
  
  protected
    def sass_options
      location_of_sass_file = if @context.build?
        File.expand_path(@context.build_dir, @context.root)
      else
        File.expand_path(@context.source, @context.root)
      end
      
      parts = basename.split('.')
      parts.pop
      css_filename = File.join(location_of_sass_file, @context.css_dir, parts.join("."))
      
      super.merge(:css_filename => css_filename)
    end
  end
  ::Sprockets.register_engine ".sass", SassPlusCSSFilenameTemplate
  ::Tilt.register 'sass', SassPlusCSSFilenameTemplate
  ::Tilt.prefer(SassPlusCSSFilenameTemplate)
  
  class ScssPlusCSSFilenameTemplate < SassPlusCSSFilenameTemplate
    # Define the expected syntax for the template
    def syntax
      :scss
    end
  end
  
  ::Sprockets.register_engine ".scss", ScssPlusCSSFilenameTemplate
  ::Tilt.register 'scss', ScssPlusCSSFilenameTemplate
  ::Tilt.prefer(ScssPlusCSSFilenameTemplate)
end

Version data entries

5 entries across 5 versions & 2 rubygems

Version Path
middleman-more-3.0.0.alpha.7 lib/middleman-more/renderers/sass.rb
middleman-3.0.0.alpha.6 lib/middleman/renderers/sass.rb
middleman-3.0.0.alpha.5 lib/middleman/renderers/sass.rb
middleman-3.0.0.alpha.4 lib/middleman/renderers/sass.rb
middleman-3.0.0.alpha.3 lib/middleman/renderers/sass.rb