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)
- 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)
- 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)
- 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)
- 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)
- 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