Sha256: 712a69912c95c9453bf0d26798ad216db379c9e64a167fa37d4395e16b9793b0

Contents?: true

Size: 1.58 KB

Versions: 3

Compression:

Stored size: 1.58 KB

Contents

module Compass
  class Compiler

    include Actions

    attr_accessor :working_path, :from, :to, :options

    def initialize(working_path, from, to, options)
      self.working_path = working_path
      self.from, self.to = from, to
      self.logger = options.delete(:logger)
      self.options = options
      self.options[:cache_location] ||= File.join(from, ".sass-cache")
    end

    def sass_files(options = {})
      exclude_partials = options.fetch(:exclude_partials, true)
      @sass_files || Dir.glob(separate("#{from}/**/#{'[^_]' if exclude_partials}*.sass"))
    end

    def stylesheet_name(sass_file)
      sass_file[("#{from}/".length)..-6]
    end

    def css_files
      @css_files ||= sass_files.map{|sass_file| corresponding_css_file(sass_file)}
    end

    def corresponding_css_file(sass_file)
      "#{to}/#{stylesheet_name(sass_file)}.css"
    end

    def target_directories
      css_files.map{|css_file| File.dirname(css_file)}.uniq.sort.sort_by{|d| d.length }
    end

    def out_of_date?
      Compass.configure_sass_plugin! unless Compass.sass_plugin_configured?
      sass_files.zip(css_files).each do |sass_filename, css_filename|
        return sass_filename if Sass::Plugin.exact_stylesheet_needs_update?(css_filename, sass_filename)
      end
      false
    end

    def run
      Compass.configure_sass_plugin! unless Compass.sass_plugin_configured?
      target_directories.each do |dir|
        directory dir
      end
      sass_files.zip(css_files).each do |sass_filename, css_filename|
        compile sass_filename, css_filename, options
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
compass-edge-0.9.4 lib/compass/compiler.rb
compass-edge-0.9.3 lib/compass/compiler.rb
compass-edge-0.9.2 lib/compass/compiler.rb