| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 | 
							- /* eslint-disable class-methods-use-this */
 
- 'use strict';
 
- const Q = require('q');
 
- /**
 
-  * COA Object
 
-  *
 
-  * Base class for all COA-related objects
 
-  *
 
-  * --------|-----|-----|-----
 
-  *         | Cmd | Opt | Arg
 
-  * --------|-----|-----|-----
 
-  *  name   | ✓   | ✓   | ✓
 
-  *  title  | ✓   | ✓   | ✓
 
-  *  comp   | ✓   | ✓   | ✓
 
-  *  reject | ✓   | ✓   | ✓
 
-  *  end    | ✓   | ✓   | ✓
 
-  *  apply  | ✓   | ✓   | ✓
 
-  *
 
-  * @class CoaObject
 
-  */
 
- module.exports = class CoaObject {
 
-     constructor(cmd) {
 
-         this._cmd = cmd;
 
-         this._name = null;
 
-         this._title = null;
 
-         this._comp = null;
 
-     }
 
-     /**
 
-      * Set a canonical identifier to be used anywhere in the API.
 
-      *
 
-      * @param {String} name - command, option or argument name
 
-      * @returns {COA.CoaObject} - this instance (for chainability)
 
-      */
 
-     name(name) {
 
-         this._name = name;
 
-         return this;
 
-     }
 
-     /**
 
-      * Set a long description to be used anywhere in text messages.
 
-      * @param {String} title - human readable entity title
 
-      * @returns {COA.CoaObject} - this instance (for chainability)
 
-      */
 
-     title(title) {
 
-         this._title = title;
 
-         return this;
 
-     }
 
-     /**
 
-      * Set custom additional completion for current object.
 
-      *
 
-      * @param {Function} comp - completion generation function,
 
-      *         invoked in the context of object instance.
 
-      *         Accepts parameters:
 
-      *                 - {Object} opts - completion options
 
-      *         It can return promise or any other value threated as a result.
 
-      * @returns {COA.CoaObject} - this instance (for chainability)
 
-      */
 
-     comp(comp) {
 
-         this._comp = comp;
 
-         return this;
 
-     }
 
-     /**
 
-      * Apply function with arguments in a context of object instance.
 
-      *
 
-      * @param {Function} fn - body
 
-      * @param {Array.<*>} args... - arguments
 
-      * @returns {COA.CoaObject} - this instance (for chainability)
 
-      */
 
-     apply(fn) {
 
-         arguments.length > 1?
 
-             fn.apply(this, [].slice.call(arguments, 1))
 
-             : fn.call(this);
 
-         return this;
 
-     }
 
-     /**
 
-      * Return reject of actions results promise with error code.
 
-      * Use in .act() for return with error.
 
-      * @param {Object} reason - reject reason
 
-      *         You can customize toString() method and exitCode property
 
-      *         of reason object.
 
-      * @returns {Q.promise} rejected promise
 
-      */
 
-     reject(reason) {
 
-         return Q.reject(reason);
 
-     }
 
-     /**
 
-      * Finish chain for current subcommand and return parent command instance.
 
-      * @returns {COA.Cmd} parent command
 
-      */
 
-     end() {
 
-         return this._cmd;
 
-     }
 
- };
 
 
  |