class Haml::Exec::Sass
The ‘sass` executable.
def initialize(args)
-
args
(Array
) -- The command-line arguments
def initialize(args) super @name = "Sass" @options[:for_engine][:load_paths] = ['.'] + (ENV['SASSPATH'] || '').split(File::PATH_SEPARATOR) end
def process_result
Processes the options set by the command-line arguments,
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 "Syntax error on line #{get_line e}: #{e.message}" end
def set_opts(opts)
-
opts
(OptionParser
) --
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