Sha256: c1fdf1f1d1ef5dabb32fa3668f39ea376f8471e1fdb49be8367ca0546b4f841f

Contents?: true

Size: 1.68 KB

Versions: 65

Compression:

Stored size: 1.68 KB

Contents

require "sass"
require "sass/plugin"

module Middleman::Renderers::Sass
  class << self
    def registered(app)
      # Default sass options
      app.set :sass, {}
    end
    alias :included :registered
  end
  
  class SassPlusCSSFilenameTemplate < ::Tilt::SassTemplate
    def sass_options_with_scope(scope)
      return sass_options if basename.nil?
    
      location_of_sass_file = if scope.build?
        File.join(scope.root, scope.build_dir)
      else
        scope.views
      end
    
      parts = basename.split('.')
      parts.pop
      css_filename = File.join(location_of_sass_file, scope.css_dir, parts.join("."))
      sass_options.merge(scope.settings.sass).merge(:css_filename => css_filename)
    end

    def evaluate(scope, locals, &block)
      @engine = ::Sass::Engine.new(data, sass_options_with_scope(scope.class))
        
      begin
        super
      rescue Sass::SyntaxError => e
        Sass::SyntaxError.exception_to_css(e, :full_exception => true)
      end
    end
  end
  ::Tilt.register 'sass', SassPlusCSSFilenameTemplate
  ::Tilt.prefer(SassPlusCSSFilenameTemplate)

  class ScssPlusCSSFilenameTemplate < SassPlusCSSFilenameTemplate
    def sass_options_with_scope(scope)
      super.merge(:syntax => :scss)
    end
  end
  ::Tilt.register 'scss', ScssPlusCSSFilenameTemplate
  ::Tilt.prefer(ScssPlusCSSFilenameTemplate)
end

# Use sass settings in Haml filters
# Other, tilt-based filters (like those used in Slim) will
# work automatically.
# module Middleman::Renderers::Haml
#   module Sass
#     include ::Haml::Filters::Base
# 
#     def render(text)
#       sass_options = scope.settings.sass
#       ::Sass::Engine.new(text, sass_options).render
#     end
#   end
# end

Version data entries

65 entries across 65 versions & 1 rubygems

Version Path
middleman-2.0.16.1-x86-mingw32 lib/middleman/renderers/sass.rb
middleman-2.0.16.1 lib/middleman/renderers/sass.rb
middleman-2.0.16-x86-mingw32 lib/middleman/renderers/sass.rb
middleman-2.0.16 lib/middleman/renderers/sass.rb
middleman-2.0.15.4-x86-mingw32 lib/middleman/renderers/sass.rb
middleman-2.0.15.4 lib/middleman/renderers/sass.rb
middleman-2.0.15.3-x86-mingw32 lib/middleman/renderers/sass.rb
middleman-2.0.15.3 lib/middleman/renderers/sass.rb
middleman-2.0.15.2-x86-mingw32 lib/middleman/renderers/sass.rb
middleman-2.0.15.2 lib/middleman/renderers/sass.rb
middleman-2.0.15.1-x86-mingw32 lib/middleman/renderers/sass.rb
middleman-2.0.15.1 lib/middleman/renderers/sass.rb
middleman-2.0.15-x86-mingw32 lib/middleman/renderers/sass.rb
middleman-2.0.15 lib/middleman/renderers/sass.rb
middleman-2.0.14-x86-mingw32 lib/middleman/renderers/sass.rb
middleman-2.0.14 lib/middleman/renderers/sass.rb
middleman-2.0.13.2-x86-mingw32 lib/middleman/renderers/sass.rb
middleman-2.0.13.1-x86-mingw32 lib/middleman/renderers/sass.rb
middleman-2.0.13.1 lib/middleman/renderers/sass.rb
middleman-2.0.13-x86-mingw32 lib/middleman/renderers/sass.rb