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; |
|
};
|
|
|