module Sass # An exception class that keeps track of # the line of the Sass template it was raised on # and the Sass file that was being parsed (if applicable). # # All Sass errors are raised as {Sass::SyntaxError}s. class SyntaxError < StandardError # The line of the Sass template on which the error occurred. # # @return [Fixnum] attr_accessor :sass_line # The name of the file that was being parsed when the exception was raised. # This could be `nil` if no filename is available. # # @return [String] attr_reader :sass_filename # @param msg [String] The error message # @param lineno [Fixnum] See \{#sass\_line} def initialize(msg, lineno = nil) @message = msg @sass_line = lineno end # Adds a properly formatted entry to the exception's backtrace. # # @param filename [String] The file in which the error occurred, # if applicable (defaults to "(sass)") def add_backtrace_entry(filename) # :nodoc: @sass_filename ||= filename self.backtrace ||= [] self.backtrace.unshift "#{@sass_filename || '(sass)'}:#{@sass_line}" end # @return [String] The error message def to_s @message end end end