BVB Source Codes

reactide Show action.js Source code

Return Download reactide: download action.js Source code - Download reactide Source code - Type:.js
  1. /**
  2.  * class Action
  3.  *
  4.  * Base class for all actions
  5.  * Do not call in your code, use this class only for inherits your own action
  6.  *
  7.  * Information about how to convert command line strings to Javascript objects.
  8.  * Action objects are used by an ArgumentParser to represent the information
  9.  * needed to parse a single argument from one or more strings from the command
  10.  * line. The keyword arguments to the Action constructor are also all attributes
  11.  * of Action instances.
  12.  *
  13.  * #####Alowed keywords:
  14.  *
  15.  * - `store`
  16.  * - `storeConstant`
  17.  * - `storeTrue`
  18.  * - `storeFalse`
  19.  * - `append`
  20.  * - `appendConstant`
  21.  * - `count`
  22.  * - `help`
  23.  * - `version`
  24.  *
  25.  * Information about action options see [[Action.new]]
  26.  *
  27.  * See also [original guide](http://docs.python.org/dev/library/argparse.html#action)
  28.  *
  29.  **/
  30.  
  31. 'use strict';
  32.  
  33.  
  34. // Constants
  35. var c = require('./const');
  36.  
  37.  
  38. /**
  39.  * new Action(options)
  40.  *
  41.  * Base class for all actions. Used only for inherits
  42.  *
  43.  *
  44.  * ##### Options:
  45.  *
  46.  * - `optionStrings`  A list of command-line option strings for the action.
  47.  * - `dest`  Attribute to hold the created object(s)
  48.  * - `nargs`  The number of command-line arguments that should be consumed.
  49.  * By default, one argument will be consumed and a single value will be
  50.  * produced.
  51.  * - `constant`  Default value for an action with no value.
  52.  * - `defaultValue`  The value to be produced if the option is not specified.
  53.  * - `type`  Cast to 'string'|'int'|'float'|'complex'|function (string). If
  54.  * None, 'string'.
  55.  * - `choices`  The choices available.
  56.  * - `required`  True if the action must always be specified at the command
  57.  * line.
  58.  * - `help`  The help describing the argument.
  59.  * - `metavar`  The name to be used for the option's argument with the help
  60.  * string. If None, the 'dest' value will be used as the name.
  61.  *
  62.  * ##### nargs supported values:
  63.  *
  64.  * - `N` (an integer) consumes N arguments (and produces a list)
  65.  * - `?`  consumes zero or one arguments
  66.  * - `*` consumes zero or more arguments (and produces a list)
  67.  * - `+` consumes one or more arguments (and produces a list)
  68.  *
  69.  * Note: that the difference between the default and nargs=1 is that with the
  70.  * default, a single value will be produced, while with nargs=1, a list
  71.  * containing a single value will be produced.
  72.  **/
  73. var Action = module.exports = function Action(options) {
  74.   options = options || {};
  75.   this.optionStrings = options.optionStrings || [];
  76.   this.dest = options.dest;
  77.   this.nargs = typeof options.nargs !== 'undefined' ? options.nargs : null;
  78.   this.constant = typeof options.constant !== 'undefined' ? options.constant : null;
  79.   this.defaultValue = options.defaultValue;
  80.   this.type = typeof options.type !== 'undefined' ? options.type : null;
  81.   this.choices = typeof options.choices !== 'undefined' ? options.choices : null;
  82.   this.required = typeof options.required !== 'undefined' ? options.required : false;
  83.   this.help = typeof options.help !== 'undefined' ? options.help : null;
  84.   this.metavar = typeof options.metavar !== 'undefined' ? options.metavar : null;
  85.  
  86.   if (!(this.optionStrings instanceof Array)) {
  87.     throw new Error('optionStrings should be an array');
  88.   }
  89.   if (typeof this.required !== 'undefined' && typeof this.required !== 'boolean') {
  90.     throw new Error('required should be a boolean');
  91.   }
  92. };
  93.  
  94. /**
  95.  * Action#getName -> String
  96.  *
  97.  * Tells action name
  98.  **/
  99. Action.prototype.getName = function () {
  100.   if (this.optionStrings.length > 0) {
  101.     return this.optionStrings.join('/');
  102.   } else if (this.metavar !== null && this.metavar !== c.SUPPRESS) {
  103.     return this.metavar;
  104.   } else if (typeof this.dest !== 'undefined' && this.dest !== c.SUPPRESS) {
  105.     return this.dest;
  106.   }
  107.   return null;
  108. };
  109.  
  110. /**
  111.  * Action#isOptional -> Boolean
  112.  *
  113.  * Return true if optional
  114.  **/
  115. Action.prototype.isOptional = function () {
  116.   return !this.isPositional();
  117. };
  118.  
  119. /**
  120.  * Action#isPositional -> Boolean
  121.  *
  122.  * Return true if positional
  123.  **/
  124. Action.prototype.isPositional = function () {
  125.   return (this.optionStrings.length === 0);
  126. };
  127.  
  128. /**
  129.  * Action#call(parser, namespace, values, optionString) -> Void
  130.  * - parser (ArgumentParser): current parser
  131.  * - namespace (Namespace): namespace for output data
  132.  * - values (Array): parsed values
  133.  * - optionString (Array): input option string(not parsed)
  134.  *
  135.  * Call the action. Should be implemented in inherited classes
  136.  *
  137.  * ##### Example
  138.  *
  139.  *      ActionCount.prototype.call = function (parser, namespace, values, optionString) {
  140.  *        namespace.set(this.dest, (namespace[this.dest] || 0) + 1);
  141.  *      };
  142.  *
  143.  **/
  144. Action.prototype.call = function () {
  145.   throw new Error('.call() not defined');// Not Implemented error
  146. };
  147.  
downloadaction.js Source code - Download reactide Source code
Related Source Codes/Software:
rkt - rkt is a pod-native container engine for Linux. It... 2017-06-11
uWebSockets - Tiny WebSockets https://for... 2017-06-11
realworld - TodoMVC for the RealWorld - Exemplary fullstack Me... 2017-06-11
goreplay - GoReplay is an open-source tool for capturing and ... 2017-06-10
pyenv - Simple Python version management 2017-06-10
postal - 2017-06-11
CRYENGINE - CRYENGINE is a powerful real-time game development... 2017-06-11
reactide - Reactide is the first dedicated IDE for React web ... 2017-06-11
redux-saga - An alternative side effect model for Redux apps ... 2017-06-10
angular-starter - 2017-06-10

 Back to top