Skip to content

Commit cbc7f03

Browse files
committed
Adds possibility to require sass files
1 parent 69118a8 commit cbc7f03

File tree

1 file changed

+30
-1
lines changed

1 file changed

+30
-1
lines changed

lib/csscss/cli.rb

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)