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