| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 | /** * 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;};
 |