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.
		
		
		
		
		
			
		
			
				
					
					
						
							76 lines
						
					
					
						
							1.8 KiB
						
					
					
				
			
		
		
		
			
			
			
		
		
	
	
							76 lines
						
					
					
						
							1.8 KiB
						
					
					
				
								/**
							 | 
						|
								 * class Namespace
							 | 
						|
								 *
							 | 
						|
								 * Simple object for storing attributes. Implements equality by attribute names
							 | 
						|
								 * and values, and provides a simple string representation.
							 | 
						|
								 *
							 | 
						|
								 * See also [original guide][1]
							 | 
						|
								 *
							 | 
						|
								 * [1]:http://docs.python.org/dev/library/argparse.html#the-namespace-object
							 | 
						|
								 **/
							 | 
						|
								'use strict';
							 | 
						|
								
							 | 
						|
								var $$ = require('./utils');
							 | 
						|
								
							 | 
						|
								/**
							 | 
						|
								 * new Namespace(options)
							 | 
						|
								 * - options(object): predefined propertis for result object
							 | 
						|
								 *
							 | 
						|
								 **/
							 | 
						|
								var Namespace = module.exports = function Namespace(options) {
							 | 
						|
								  $$.extend(this, options);
							 | 
						|
								};
							 | 
						|
								
							 | 
						|
								/**
							 | 
						|
								 * Namespace#isset(key) -> Boolean
							 | 
						|
								 * - key (string|number): property name
							 | 
						|
								 *
							 | 
						|
								 * Tells whenever `namespace` contains given `key` or not.
							 | 
						|
								 **/
							 | 
						|
								Namespace.prototype.isset = function (key) {
							 | 
						|
								  return $$.has(this, key);
							 | 
						|
								};
							 | 
						|
								
							 | 
						|
								/**
							 | 
						|
								 * Namespace#set(key, value) -> self
							 | 
						|
								 * -key (string|number|object): propery name
							 | 
						|
								 * -value (mixed): new property value
							 | 
						|
								 *
							 | 
						|
								 * Set the property named key with value.
							 | 
						|
								 * If key object then set all key properties to namespace object
							 | 
						|
								 **/
							 | 
						|
								Namespace.prototype.set = function (key, value) {
							 | 
						|
								  if (typeof (key) === 'object') {
							 | 
						|
								    $$.extend(this, key);
							 | 
						|
								  } else {
							 | 
						|
								    this[key] = value;
							 | 
						|
								  }
							 | 
						|
								  return this;
							 | 
						|
								};
							 | 
						|
								
							 | 
						|
								/**
							 | 
						|
								 * Namespace#get(key, defaultValue) -> mixed
							 | 
						|
								 * - key (string|number): property name
							 | 
						|
								 * - defaultValue (mixed): default value
							 | 
						|
								 *
							 | 
						|
								 * Return the property key or defaulValue if not set
							 | 
						|
								 **/
							 | 
						|
								Namespace.prototype.get = function (key, defaultValue) {
							 | 
						|
								  return !this[key] ? defaultValue : this[key];
							 | 
						|
								};
							 | 
						|
								
							 | 
						|
								/**
							 | 
						|
								 * Namespace#unset(key, defaultValue) -> mixed
							 | 
						|
								 * - key (string|number): property name
							 | 
						|
								 * - defaultValue (mixed): default value
							 | 
						|
								 *
							 | 
						|
								 * Return data[key](and delete it) or defaultValue
							 | 
						|
								 **/
							 | 
						|
								Namespace.prototype.unset = function (key, defaultValue) {
							 | 
						|
								  var value = this[key];
							 | 
						|
								  if (value !== null) {
							 | 
						|
								    delete this[key];
							 | 
						|
								    return value;
							 | 
						|
								  }
							 | 
						|
								  return defaultValue;
							 | 
						|
								};
							 | 
						|
								
							 |