Extract a project compiler class from the update_project command.
This commit is contained in:
parent
6c4759278e
commit
3adf6a6435
@ -57,8 +57,6 @@ module Compass
|
|||||||
|
|
||||||
# Compile one Sass file
|
# Compile one Sass file
|
||||||
def compile(sass_filename, css_filename, options)
|
def compile(sass_filename, css_filename, options)
|
||||||
target_directory = File.dirname(css_filename)
|
|
||||||
directory target_directory
|
|
||||||
logger.record :compile, basename(sass_filename)
|
logger.record :compile, basename(sass_filename)
|
||||||
if File.exists?(css_filename)
|
if File.exists?(css_filename)
|
||||||
logger.record :overwrite, basename(css_filename)
|
logger.record :overwrite, basename(css_filename)
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
require File.join(File.dirname(__FILE__), 'project_base')
|
require File.join(File.dirname(__FILE__), 'project_base')
|
||||||
|
require File.join(Compass.lib_directory, 'compass', 'compiler')
|
||||||
|
|
||||||
module Compass
|
module Compass
|
||||||
module Commands
|
module Commands
|
||||||
@ -13,13 +14,10 @@ module Compass
|
|||||||
read_project_configuration
|
read_project_configuration
|
||||||
default_options = { :style => default_output_style }
|
default_options = { :style => default_output_style }
|
||||||
compilation_options = default_options.merge(options).merge(:load_paths => sass_load_paths)
|
compilation_options = default_options.merge(options).merge(:load_paths => sass_load_paths)
|
||||||
Dir.glob(separate("#{project_src_directory}/**/[^_]*.sass")).each do |sass_file|
|
Compass::Compiler.new(working_path,
|
||||||
stylesheet_name = sass_file[("#{project_src_directory}/".length)..-6]
|
projectize(project_src_subdirectory),
|
||||||
|
projectize(project_css_subdirectory),
|
||||||
sass_filename = projectize("#{project_src_subdirectory}/#{stylesheet_name}.sass")
|
compilation_options).run
|
||||||
css_filename = projectize("#{project_css_subdirectory}/#{stylesheet_name}.css")
|
|
||||||
compile sass_filename, css_filename, compilation_options
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def default_output_style
|
def default_output_style
|
||||||
|
40
lib/compass/compiler.rb
Normal file
40
lib/compass/compiler.rb
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
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
|
||||||
|
end
|
||||||
|
|
||||||
|
def sass_files
|
||||||
|
@sass_files || Dir.glob(separate("#{from}/**/[^_]*.sass"))
|
||||||
|
end
|
||||||
|
|
||||||
|
def stylesheet_name(sass_file)
|
||||||
|
sass_file[("#{from}/".length)..-6]
|
||||||
|
end
|
||||||
|
|
||||||
|
def css_files
|
||||||
|
@css_files || sass_files.map{|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 run
|
||||||
|
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
|
Loading…
Reference in New Issue
Block a user