Blame view

node_modules/argparse/lib/namespace.js 1.78 KB
aaac7fed   liuqimichale   add
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
  /**
   * 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;
  };