class Sass::BaseEnvironment

The abstract base class for lexical environments for SassScript.

Attributes

caller[W]
content[W]
options[R]

The options passed to the Sass Engine.

selector[W]

Public Class Methods

inherited_hash_accessor(name) click to toggle source

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
inherited_hash_reader(name) click to toggle source
# 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
inherited_hash_writer(name) click to toggle source
# 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
new(parent = nil, options = nil) click to toggle source

@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

caller() click to toggle source

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
content() click to toggle source

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
global?() click to toggle source

Returns whether this is the global environment.

@return [Boolean]

# File lib/sass/environment.rb, line 95
def global?
  @parent.nil?
end
global_env() click to toggle source

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
selector() click to toggle source

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
stack() click to toggle source

The import/mixin stack.

@return [Sass::Stack]

# File lib/sass/environment.rb, line 133
def stack
  @stack || global_env.stack
end