Object
# File lib/compass/sass_compiler.rb, line 15 def initialize(options = {}, config = Compass.configuration) options = options.dup self.config = config self.display_compilation_times = options.delete(:time) self.working_path = options.delete(:working_path) || Dir.pwd self.only_sass_files = options.delete(:only_sass_files) || [] @quiet = options[:quiet] plugin_options = config.to_sass_plugin_options.merge(options) if only_sass_files.any? plugin_options[:template_location] = [] plugin_options[:load_paths] = config.sass_load_paths end plugin_options[:always_update] = true if options.delete(:force) plugin_options[:compass] ||= {} plugin_options[:compass][:logger] = logger @compiler = Sass::Plugin::Compiler.new(plugin_options) @start_times = {} @error_count = 0 public_methods(true).grep(/^when_/).each do |callback| @compiler.send(callback.to_s.sub(/^when_/, 'on_')) {|*args| send(callback, *args) } end end
# File lib/compass/sass_compiler.rb, line 57 def clean! @compiler.clean(individual_files) end
# File lib/compass/sass_compiler.rb, line 39 def compile! @compiler.update_stylesheets(individual_files) end
# File lib/compass/sass_compiler.rb, line 131 def corresponding_css_file(sass_file) "#{config.css_path}/#{stylesheet_name(sass_file)}.css" end
# File lib/compass/sass_compiler.rb, line 61 def file_list @compiler.file_list(individual_files) end
# File lib/compass/sass_compiler.rb, line 53 def individual_files only_sass_files.map {|sass_file| [sass_file, corresponding_css_file(sass_file)]} end
# File lib/compass/sass_compiler.rb, line 127 def logger @logger ||= Compass::Logger.new(:quiet => quiet) end
# File lib/compass/sass_compiler.rb, line 143 def sass_files(options = {}) @compiler.template_location_array.map do |(sass_dir, css_dir)| glob = options[:include_partials] ? File.join("**","*.s[ac]ss*") : File.join("**","[^_]*.s[ac]ss*") Dir.glob(File.join(sass_dir, glob)) end.flatten end
# File lib/compass/sass_compiler.rb, line 135 def stylesheet_name(sass_file) if sass_file.index(config.sass_path) == 0 sass_file[(config.sass_path.length + 1)..-6].sub(/\.css$/,'') else raise Compass::Error, "Individual stylesheets must be in the sass directory." end end
# File lib/compass/sass_compiler.rb, line 43 def watch!(options = {}, &block) skip_initial_update = options.fetch(:skip_initial_update, false) begin @compiler.watch(individual_files, options.merge(:skip_initial_update => skip_initial_update), &block) rescue Sass::SyntaxError => e skip_initial_update = true retry end end
# File lib/compass/sass_compiler.rb, line 113 def when_compilation_error(error, sass_file, css_file, sourcemap_file) @error_count += 1 if error.respond_to?(:sass_filename) if relativize(error.sass_filename) == relativize(sass_file) logger.record :error, "#{relativize(error.sass_filename)} (Line #{error.sass_line}: #{error.message})" else logger.record :error, "#{relativize(sass_file)} (Line #{error.sass_line} of #{relativize(error.sass_filename)}: #{error.message})" end else logger.record :error, "#{relativize(sass_file)} (#{error.backtrace.first}: #{error.message})" end config.run_stylesheet_error(sass_file, error.message) end
# File lib/compass/sass_compiler.rb, line 70 def when_compilation_starting(sass_file, css, sourcemap) @start_times[sass_file] = Time.now end
# File lib/compass/sass_compiler.rb, line 99 def when_creating_directory(dirname) logger.record :directory, relativize(dirname) end
# File lib/compass/sass_compiler.rb, line 103 def when_deleting_css(filename) logger.record :delete, relativize(filename) config.run_stylesheet_removed(filename) if filename end
# File lib/compass/sass_compiler.rb, line 108 def when_deleting_sourcemap(filename) logger.record :delete, relativize(filename) config.run_sourcemap_removed(filename) if filename end
# File lib/compass/sass_compiler.rb, line 74 def when_template_created(sass_file) logger.record :created, relativize(sass_file) end
# File lib/compass/sass_compiler.rb, line 78 def when_template_deleted(sass_file) logger.record :deleted, relativize(sass_file) end
# File lib/compass/sass_compiler.rb, line 82 def when_template_modified(sass_file) logger.record :modified, relativize(sass_file) end
# File lib/compass/sass_compiler.rb, line 86 def when_updated_stylesheet(sass_file, css, sourcemap) if css && display_compilation_times && @start_times[sass_file] duration = ((Time.now - @start_times[sass_file]) * 1000).round / 1000.0 logger.record :write, "#{relativize(css)} (#{duration}s)" else logger.record :write, relativize(css) if css end config.run_stylesheet_saved(css) if css logger.record :write, relativize(sourcemap) if sourcemap config.run_sourcemap_saved(sourcemap) if sourcemap end
Generated with the Darkfish Rdoc Generator 2.