Class: Haml::Exec::Sass
Overview
The sass
executable.
Instance Method Summary collapse
-
#initialize(args) ⇒ Sass
constructor
A new instance of Sass.
-
#process_result ⇒ Object
protected
Processes the options set by the command-line arguments, and runs the Sass compiler appropriately.
-
#set_opts(opts) ⇒ Object
protected
Tells optparse how to parse the arguments.
Methods inherited from Generic
Constructor Details
#initialize(args) ⇒ Sass
Returns a new instance of Sass.
199 200 201 202 203 |
# File 'lib/haml/exec.rb', line 199
def initialize(args)
super
@name = "Sass"
@options[:for_engine][:load_paths] = ['.'] + (ENV['SASSPATH'] || '').split(File::PATH_SEPARATOR)
end
|
Instance Method Details
#process_result ⇒ Object (protected)
Processes the options set by the command-line arguments, and runs the Sass compiler appropriately.
238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 |
# File 'lib/haml/exec.rb', line 238
def process_result
if @options[:interactive]
require 'sass'
require 'sass/repl'
::Sass::Repl.new(@options).run
return
end
super
input = @options[:input]
output = @options[:output]
tree =
if input.is_a?(File) && !@options[:check_syntax]
::Sass::Files.tree_for(input.path, @options[:for_engine])
else
# We don't need to do any special handling of @options[:check_syntax] here,
# because the Sass syntax checking happens alongside evaluation
# and evaluation doesn't actually evaluate any code anyway.
::Sass::Engine.new(input.read(), @options[:for_engine]).to_tree
end
input.close() if input.is_a?(File)
output.write(tree.render)
output.close() if output.is_a? File
rescue ::Sass::SyntaxError => e
raise e if @options[:trace]
raise e.sass_backtrace_str("standard input")
end
|
#set_opts(opts) ⇒ Object (protected)
Tells optparse how to parse the arguments.
210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 |
# File 'lib/haml/exec.rb', line 210
def set_opts(opts)
super
opts.on('-t', '--style NAME',
'Output style. Can be nested (default), compact, compressed, or expanded.') do |name|
@options[:for_engine][:style] = name.to_sym
end
opts.on('-l', '--line-comments',
'Line Comments. Emit comments in the generated CSS indicating the corresponding sass line.') do
@options[:for_engine][:line_comments] = true
end
opts.on('-i', '--interactive',
'Run an interactive SassScript shell.') do
@options[:interactive] = true
end
opts.on('-I', '--load-path PATH', 'Add a sass import path.') do |path|
@options[:for_engine][:load_paths] << path
end
opts.on('--cache-location', 'The path to put cached Sass files. Defaults to .sass-cache.') do |loc|
@options[:for_engine][:cache_location] = path
end
opts.on('-C', '--no-cache', "Don't cache to sassc files.") do
@options[:for_engine][:cache] = false
end
end
|