Blame view

node_modules/argparse/lib/argument/group.js 2.28 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
  /** internal
   * class ArgumentGroup
   *
   * Group arguments.
   * By default, ArgumentParser groups command-line arguments
   * into positional arguments and optional arguments
   * when displaying help messages. When there is a better
   * conceptual grouping of arguments than this default one,
   * appropriate groups can be created using the addArgumentGroup() method
   *
   * This class inherited from [[ArgumentContainer]]
   **/
  'use strict';
  
  var util = require('util');
  
  var ActionContainer = require('../action_container');
  
  
  /**
   * new ArgumentGroup(container, options)
   * - container (object): main container
   * - options (object): hash of group options
   *
   * #### options
   * - **prefixChars**  group name prefix
   * - **argumentDefault**  default argument value
   * - **title**  group title
   * - **description** group description
   *
   **/
  var ArgumentGroup = module.exports = function ArgumentGroup(container, options) {
  
    options = options || {};
  
    // add any missing keyword arguments by checking the container
    options.conflictHandler = (options.conflictHandler || container.conflictHandler);
    options.prefixChars = (options.prefixChars || container.prefixChars);
    options.argumentDefault = (options.argumentDefault || container.argumentDefault);
  
    ActionContainer.call(this, options);
  
    // group attributes
    this.title = options.title;
    this._groupActions = [];
  
    // share most attributes with the container
    this._container = container;
    this._registries = container._registries;
    this._actions = container._actions;
    this._optionStringActions = container._optionStringActions;
    this._defaults = container._defaults;
    this._hasNegativeNumberOptionals = container._hasNegativeNumberOptionals;
    this._mutuallyExclusiveGroups = container._mutuallyExclusiveGroups;
  };
  util.inherits(ArgumentGroup, ActionContainer);
  
  
  ArgumentGroup.prototype._addAction = function (action) {
    // Parent add action
    action = ActionContainer.prototype._addAction.call(this, action);
    this._groupActions.push(action);
    return action;
  };
  
  
  ArgumentGroup.prototype._removeAction = function (action) {
    // Parent remove action
    ActionContainer.prototype._removeAction.call(this, action);
    var actionIndex = this._groupActions.indexOf(action);
    if (actionIndex >= 0) {
      this._groupActions.splice(actionIndex, 1);
    }
  };