middleman/lib/middleman/renderers/sass.rb
2011-11-20 21:21:19 -08:00

53 lines
No EOL
1.4 KiB
Ruby

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.views, @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