You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
54 lines
861 B
54 lines
861 B
9 years ago
|
|
||
|
/*!
|
||
|
* Stylus - stack - Scope
|
||
|
* Copyright (c) Automattic <developer.wordpress.com>
|
||
|
* MIT Licensed
|
||
|
*/
|
||
|
|
||
|
/**
|
||
|
* Initialize a new `Scope`.
|
||
|
*
|
||
|
* @api private
|
||
|
*/
|
||
|
|
||
|
var Scope = module.exports = function Scope() {
|
||
|
this.locals = {};
|
||
|
};
|
||
|
|
||
|
/**
|
||
|
* Add `ident` node to the current scope.
|
||
|
*
|
||
|
* @param {Ident} ident
|
||
|
* @api private
|
||
|
*/
|
||
|
|
||
|
Scope.prototype.add = function(ident){
|
||
|
this.locals[ident.name] = ident.val;
|
||
|
};
|
||
|
|
||
|
/**
|
||
|
* Lookup the given local variable `name`.
|
||
|
*
|
||
|
* @param {String} name
|
||
|
* @return {Node}
|
||
|
* @api private
|
||
|
*/
|
||
|
|
||
|
Scope.prototype.lookup = function(name){
|
||
|
return this.locals[name];
|
||
|
};
|
||
|
|
||
|
/**
|
||
|
* Custom inspect.
|
||
|
*
|
||
|
* @return {String}
|
||
|
* @api public
|
||
|
*/
|
||
|
|
||
|
Scope.prototype.inspect = function(){
|
||
|
var keys = Object.keys(this.locals).map(function(key){ return '@' + key; });
|
||
|
return '[Scope'
|
||
|
+ (keys.length ? ' ' + keys.join(', ') : '')
|
||
|
+ ']';
|
||
|
};
|