@@ -10,6 +10,7 @@ def initialize(argv)
1010 @ignored_selectors = [ ]
1111 @match_shorthand = true
1212 @ignore_sass_mixins = false
13+ @sass_import_paths = [ ]
1314 end
1415
1516 def run
@@ -103,6 +104,10 @@ def parse(argv)
103104 enable_compass ( config )
104105 end
105106
107+ opts . on ( "--require-sass file1.sass, file2.sass,..." , Array , "Add these files to the sass load paths" ) do |files |
108+ @sass_import_paths = files
109+ end
110+
106111 opts . on ( "--require file.rb" , "Load ruby file before running csscss." , "Great for bootstrapping requires/configurations" ) do |file |
107112 load file
108113 end
@@ -173,8 +178,11 @@ def load_sass_file(filename)
173178
174179 sass_options = { cache :false }
175180 sass_options [ :load_paths ] = Compass . configuration . sass_load_paths if @compass
181+ add_imports filename
176182 begin
177- Sass ::Engine . for_file ( filename , sass_options ) . render
183+ sass2css = Sass ::Engine . for_file ( filename , sass_options ) . render
184+ remove_imports filename
185+ return sass2css
178186 rescue Sass ::SyntaxError => e
179187 if e . message =~ /compass/ && !@compass
180188 puts "Enable --compass option to use compass's extensions"
@@ -185,6 +193,27 @@ def load_sass_file(filename)
185193 end
186194 end
187195
196+ def add_imports ( filename )
197+ @sass_import_paths . map! { |path | "@import \" #{ clean_up_path ( path ) } \" \n " } . join
198+ old_file = IO . read ( filename )
199+ File . open ( filename , 'w' ) do |file |
200+ file . puts @sass_import_paths
201+ file . puts old_file
202+ end
203+ end
204+
205+ def remove_imports ( filename )
206+ regex = Regexp . union ( @sass_import_paths )
207+ new_lines = [ ]
208+ File . foreach ( filename ) { |old_line | new_lines << old_line unless old_line . match ( regex ) }
209+ File . open ( filename , "w" ) { |new_file | new_file . puts new_lines }
210+ end
211+
212+ def clean_up_path ( path )
213+ path . gsub! ( /^_/ , '' )
214+ File . basename ( path , File . extname ( path ) )
215+ end
216+
188217 def load_less_file ( filename )
189218 abort 'Must install the "less" gem before parsing less files' unless gem_installed? ( "less" )
190219 contents = load_css_file ( filename )
0 commit comments