class Sass::Environment
The lexical environment for SassScript. This keeps track of variable, mixin, and function definitions.
A new environment is created for each level of Sass
nesting. This allows variables to be lexically scoped. The new environment refers to the environment in the upper scope, so it has access to variables defined in enclosing scopes, but new variables are defined locally.
Environment
also keeps track of the {Engine} options so that they can be made available to {Sass::Script::Functions}.
Constants
- DASH
Attributes
The enclosing environment, or nil if this is the global environment.
@return [Environment]
Public Class Methods
@param options [{Symbol => Object}] The options hash. See
{file:SASS_REFERENCE.md#sass_options the Sass options documentation}.
@param parent [Environment] See {#parent}
# File lib/sass/environment.rb, line 28 def initialize(parent = nil, options = nil) @parent = parent @options = options || (parent && parent.options) || {} end
Private Class Methods
Note: when updating this, update sass/yard/inherited_hash.rb as well.
# File lib/sass/environment.rb, line 54 def inherited_hash(name) class_eval <<RUBY, __FILE__, __LINE__ + 1 def #{name}(name) _#{name}(name.tr(UNDERSCORE, DASH)) end def _#{name}(name) (@#{name}s && @#{name}s[name]) || @parent && @parent._#{name}(name) end protected :_#{name} def set_#{name}(name, value) name = name.tr(UNDERSCORE, DASH) @#{name}s[name] = value unless try_set_#{name}(name, value) end def try_set_#{name}(name, value) @#{name}s ||= {} if @#{name}s.include?(name) @#{name}s[name] = value true elsif @parent @parent.try_set_#{name}(name, value) else false end end protected :try_set_#{name} def set_local_#{name}(name, value) @#{name}s ||= {} @#{name}s[name.tr(UNDERSCORE, DASH)] = value end RUBY end
Public Instance Methods
The environment of the caller of this environment’s mixin or function. @return {Environment?}
# File lib/sass/environment.rb, line 35 def caller @caller || (@parent && @parent.caller) end
The content passed to this environmnet. This is naturally only set for mixin body environments with content passed in. @return {Environment?}
# File lib/sass/environment.rb, line 42 def content @content || (@parent && @parent.content) end