class Sass::Stack

A class representing the stack when compiling a Sass file.

def initialize

def initialize
  @frames = []
end

def to_s

def to_s
  (frames.reverse + [nil]).each_cons(2).each_with_index.
      map do |(frame, caller), i|
    "#{i == 0 ? 'on' : 'from'} line #{frame.line}" +
      " of #{frame.filename || 'an unknown file'}" +
      (caller && caller.name ? ", in `#{caller.name}'" : "")
  end.join("\n")
end

def with_base(filename, line)

Other tags:
    Yield: - [] A block in which the new frame is on the stack.

Parameters:
  • line (String) -- See \{Frame#line}.
  • filename (String) -- See \{Frame#filename}.
def with_base(filename, line)
  with_frame(filename, line, :base) {yield}
end

def with_directive(filename, line, name)

Other tags:
    Yield: - [] A block in which the new frame is on the stack.

Parameters:
  • name (String) -- See \{Frame#name}.
  • line (String) -- See \{Frame#line}.
  • filename (String) -- See \{Frame#filename}.
def with_directive(filename, line, name)
  with_frame(filename, line, :directive, name) {yield}
end

def with_frame(filename, line, type, name = nil)

def with_frame(filename, line, type, name = nil)
  @frames.pop if @frames.last && @frames.last.type == :base
  @frames.push(Frame.new(filename, line, type, name))
  yield
ensure
  @frames.pop unless type == :base && @frames.last && @frames.last.type != :base
end

def with_function(filename, line, name)

Other tags:
    Yield: - [] A block in which the new frame is on the stack.

Parameters:
  • name (String) -- See \{Frame#name}.
  • line (String) -- See \{Frame#line}.
  • filename (String) -- See \{Frame#filename}.
def with_function(filename, line, name)
  with_frame(filename, line, :function, name) {yield}
end

def with_import(filename, line)

Other tags:
    Yield: - [] A block in which the new frame is on the stack.

Parameters:
  • line (String) -- See \{Frame#line}.
  • filename (String) -- See \{Frame#filename}.
def with_import(filename, line)
  with_frame(filename, line, :import) {yield}
end

def with_mixin(filename, line, name)

Other tags:
    Yield: - [] A block in which the new frame is on the stack.

Parameters:
  • name (String) -- See \{Frame#name}.
  • line (String) -- See \{Frame#line}.
  • filename (String) -- See \{Frame#filename}.
def with_mixin(filename, line, name)
  with_frame(filename, line, :mixin, name) {yield}
end