gems.sass-3.2.8.lib.sass.environment.rb Maven / Gradle / Ivy
Go to download
Sass makes CSS fun again. Sass is an extension of CSS3, adding nested rules, variables, mixins, selector
inheritance, and more. It's translated to well-formatted, standard CSS using the command line tool or a
web-framework plugin.
This is a repackaged GEM in a JAR format of the sass-lang.gem package. The sass-gems package version
follows the sass-lang.gem versions located http://rubyforge.org/frs/?group_id=9702. Simply change
the version of this package to download and repackage the same GEM version.
require 'set'
module Sass
# 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}.
class Environment
# The enclosing environment,
# or nil if this is the global environment.
#
# @return [Environment]
attr_reader :parent
attr_reader :options
attr_writer :caller
attr_writer :content
# @param options [{Symbol => Object}] The options hash. See
# {file:SASS_REFERENCE.md#sass_options the Sass options documentation}.
# @param parent [Environment] See \{#parent}
def initialize(parent = nil, options = nil)
@parent = parent
@options = options || (parent && parent.options) || {}
end
# The environment of the caller of this environment's mixin or function.
# @return {Environment?}
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?}
def content
@content || (@parent && @parent.content)
end
private
class << self
private
UNDERSCORE, DASH = '_', '-'
# Note: when updating this,
# update sass/yard/inherited_hash.rb as well.
def inherited_hash(name)
class_eval <