class Sass::BaseEnvironment
The abstract base class for lexical environments for SassScript.
Attributes
Public Class Methods
Note: when updating this, update sass/yard/inherited_hash.rb as well.
# File lib/sass/environment.rb, line 9 def inherited_hash_accessor(name) inherited_hash_reader(name) inherited_hash_writer(name) end
# File lib/sass/environment.rb, line 14 def inherited_hash_reader(name) class_eval " def #{name}(name) _#{name}(name.tr('_', '-')) end def _#{name}(name) (@#{name}s && @#{name}s[name]) || @parent && @parent._#{name}(name) end protected :_#{name} def is_#{name}_global?(name) return !@parent if @#{name}s && @#{name}s.has_key?(name) @parent && @parent.is_#{name}_global?(name) end ", __FILE__, __LINE__ + 1 end
# File lib/sass/environment.rb, line 32 def inherited_hash_writer(name) class_eval " def set_#{name}(name, value) name = name.tr('_', '-') @#{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.global? @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('_', '-')] = value end def set_global_#{name}(name, value) global_env.set_#{name}(name, value) end ", __FILE__, __LINE__ + 1 end
@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 86 def initialize(parent = nil, options = nil) @parent = parent @options = options || (parent && parent.options) || {} @stack = Sass::Stack.new if @parent.nil? end
Public Instance Methods
The environment of the caller of this environment's mixin or function. @return {Environment?}
# File lib/sass/environment.rb, line 101 def caller @caller || (@parent && @parent.caller) end
The content passed to this environment. This is naturally only set for mixin body environments with content passed in.
@return {[Array<Sass::Tree::Node>, Environment]?} The content nodes and
the lexical environment of the content block.
# File lib/sass/environment.rb, line 110 def content @content || (@parent && @parent.content) end
Returns whether this is the global environment.
@return [Boolean]
# File lib/sass/environment.rb, line 95 def global? @parent.nil? end
The top-level Environment object.
@return [Environment]
# File lib/sass/environment.rb, line 126 def global_env @global_env ||= global? ? self : @parent.global_env end
The selector for the current CSS rule, or nil if there is no current CSS rule.
@return [Selector::CommaSequence?] The current selector, with any
nesting fully resolved.
# File lib/sass/environment.rb, line 119 def selector @selector || (@caller && @caller.selector) || (@parent && @parent.selector) end
The import/mixin stack.
@return [Sass::Stack]
# File lib/sass/environment.rb, line 133 def stack @stack || global_env.stack end