lib/spiderfw/templates/resources/sass.rb in spiderfw-0.6.21 vs lib/spiderfw/templates/resources/sass.rb in spiderfw-0.6.22

- old
+ new

@@ -1,19 +1,76 @@ -require 'sass' +require 'sass/plugin/configuration' + +module Sass::Plugin::Configuration + + def default_options + @default_options ||= { + :css_location => './public/stylesheets', + :always_update => false, + :always_check => true, + :full_exception => true, + :cache_location => File.join(Spider.paths[:tmp], 'sass', '.sass_cache') + }.freeze + end +end + require 'sass/plugin' -Sass::Plugin.options[:cache_location] = File.join(Spider.paths[:tmp], 'sass-cache') +require 'sass' + module Spider - module SassCompiler + class SassCompiler + + def initialize(base_path) + @base_path = base_path + end - def self.compile(src, dest) - engine = Sass::Engine.for_file(src, {}) - output = engine.render - File.open(dest, 'w') do |f| - f.write "/* This file is autogenerated; do not edit directly (edit #{src} instead) */\n\n" - f.write output + def compile(src, dest) + use_compass = false + if Spider.conf.get('css.sass.use_compass') + begin + require 'compass' + use_compass = true + rescue LoadError => exc + Spider.logger.debug(exc) + Spider.logger.debug("Compass not found. Please install 'compass' gem") + end + end + if use_compass + work_dir = FileUtils.mkdir_p(File.join(Spider.paths[:tmp], 'sass')) + src_dir = File.dirname(src) + src_dir = src_dir + # dest_dir = File.dirname(dest) + + options = { + :project_path => @base_path, + :css_dir => 'css', + :sass_dir => 'sass', + # :fonts_path => src_dir, + # :images_path => src_dir, + :fonts_dir => 'fonts', + :images_dir => 'img', + :javascripts_dir => 'js', + :relative_assets => true, + :line_comments => Spider.runmode == 'devel' ? true : false, + :sass => Compass.sass_engine_options.merge({ + :cache_location => File.join(work_dir, '.sass_cache') + }), + :css_filename => dest + } + config = Compass::Configuration::Data.new(:spider, options) + Compass.add_project_configuration(config) + compiler = Compass::Compiler.new(work_dir, File.dirname(src), File.dirname(dest), options) + compiler.compile(src, dest) + else + engine = Sass::Engine.for_file(src, {}) + output = engine.render + File.open(dest, 'w') do |f| + f.write "/* This file is autogenerated; do not edit directly (edit #{src} instead) */\n\n" + f.write output + end end end end \ No newline at end of file