1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- /**
- * 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('underscore');
-
- /**
- * 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;
- } else {
- return defaultValue;
- }
- };
|