class Haml::Exec::Sass

The ‘sass` executable.

def initialize(args)

Parameters:
  • 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

and runs the Sass compiler appropriately.
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)

Parameters:
  • 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