class Sass::Exec::Base

The abstract base class for Sass executables.

def color(color, str)

Returns:
  • (String) - The wrapped string.

Parameters:
  • str (String) -- The string to wrap in the given color.
  • color (Symbol) -- The name of the color to use.
def color(color, str)
  raise "[BUG] Unrecognized color #{color}" unless COLORS[color]
  # Almost any real Unix terminal will support color,
  # so we just filter for Windows terms (which don't set TERM)
  # and not-real terminals, which aren't ttys.
  return str if ENV["TERM"].nil? || ENV["TERM"].empty? || !STDOUT.tty?
  "\e[#{COLORS[color]}m#{str}\e[0m"
end

def encoding_option(opts)

Parameters:
  • opts (OptionParser) --
def encoding_option(opts)
  encoding_desc = 'Specify the default encoding for input files.'
  opts.on('-E', '--default-encoding ENCODING', encoding_desc) do |encoding|
    Encoding.default_external = encoding
  end
end

def get_line(exception)

Returns:
  • (String) - The line number

Parameters:
  • exception (Exception) -- The exception
def get_line(exception)
  # SyntaxErrors have weird line reporting
  # when there's trailing whitespace
  if exception.is_a?(::SyntaxError)
    return (exception.message.scan(/:(\d+)/).first || ["??"]).first
  end
  (exception.backtrace[0].scan(/:(\d+)/).first || ["??"]).first
end

def handle_load_error(err)

def handle_load_error(err)
  dep = err.message[/^no such file to load -- (.*)/, 1]
  raise err if @options[:trace] || dep.nil? || dep.empty?
  $stderr.puts <<MESSAGE
ired dependency #{dep} not found!
Run "gem install #{dep}" to get it.
e --trace for backtrace.
AGE
  exit 1
end

def initialize(args)

Parameters:
  • args (Array) -- The command-line arguments
def initialize(args)
  @args = args
  @options = {}
end

def open_file(filename, flag = 'r')

def open_file(filename, flag = 'r')
  return if filename.nil?
  flag = 'wb' if @options[:unix_newlines] && flag == 'w'
  file = File.open(filename, flag)
  return file unless block_given?
  yield file
  file.close
end

def parse

Other tags:
    See: #parse! -
def parse
  @opts = OptionParser.new(&method(:set_opts))
  @opts.parse!(@args)
  process_result
  @options
end

def parse!

Other tags:
    See: #parse -
def parse!
  begin
    parse
  rescue Exception => e
    # Exit code 65 indicates invalid data per
    # http://www.freebsd.org/cgi/man.cgi?query=sysexits. Setting it via
    # at_exit is a bit of a hack, but it allows us to rethrow when --trace
    # is active and get both the built-in exception formatting and the
    # correct exit code.
    at_exit {exit Sass::Util.windows? ? 13 : 65} if e.is_a?(Sass::SyntaxError)
    raise e if @options[:trace] || e.is_a?(SystemExit)
    if e.is_a?(Sass::SyntaxError)
      $stderr.puts e.sass_backtrace_str("standard input")
    else
      $stderr.print "#{e.class}: " unless e.class == RuntimeError
      $stderr.puts e.message.to_s
    end
    $stderr.puts "  Use --trace for backtrace."
    exit 1
  end
  exit 0
end

def process_result

so they can run their respective programs.
This is meant to be overridden by subclasses

sets `@options[:input]` and `@options[:output]` to appropriate IO streams.
Processes the options set by the command-line arguments. In particular,
def process_result
  input, output = @options[:input], @options[:output]
  args = @args.dup
  input ||=
    begin
      filename = args.shift
      @options[:filename] = filename
      open_file(filename) || $stdin
    end
  @options[:output_filename] = args.shift
  output ||= @options[:output_filename] || $stdout
  @options[:input], @options[:output] = input, output
end

def puts(*args)

Parameters:
  • args (Array) -- Passed on to `Kernel.puts`
def puts(*args)
  return if @options[:for_engine][:quiet]
  Kernel.puts(*args)
end

def puts_action(name, color, arg)

Parameters:
  • color (Symbol) -- The name of the color to use for this action.
  • name (#to_s) -- A short name for the action being performed.
def puts_action(name, color, arg)
  return if @options[:for_engine][:quiet]
  printf color(color, "%11s %s\n"), name, arg
  STDOUT.flush
end

def set_opts(opts)

Parameters:
  • opts (OptionParser) --
def set_opts(opts)
  Sass::Util.abstract(this)
end

def to_s

Returns:
  • (String) - A description of the executable
def to_s
  @opts.to_s
end

def write_output(text, destination)

def write_output(text, destination)
  if destination.is_a?(String)
    open_file(destination, 'w') {|file| file.write(text)}
  else
    destination.write(text)
  end
end