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
  begin
    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
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-numbers', '--line-comments',
          'Emit comments in the generated CSS indicating the corresponding sass line.') do
    @options[:for_engine][:line_numbers] = 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 PATH', 'The path to put cached Sass files. Defaults to .sass-cache.') do |loc|
    @options[:for_engine][:cache_location] = loc
  end
  opts.on('-C', '--no-cache', "Don't cache to sassc files.") do
    @options[:for_engine][:cache] = false
  end
end