1353e7109eb64ca20e4846d5f8dba6eb36ce1b6b263d154a4ced8b58f1c981e8de1a00183f927d077fcc53185332d5f80ba7472181eb058d7850105873eb0f 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440
  1. <!doctype html>
  2. <html lang="en">
  3. <head>
  4. <title>Code coverage report for coa/lib/coaparam.js</title>
  5. <meta charset="utf-8" />
  6. <link rel="stylesheet" href="../../prettify.css" />
  7. <link rel="stylesheet" href="../../base.css" />
  8. <meta name="viewport" content="width=device-width, initial-scale=1">
  9. <style type='text/css'>
  10. .coverage-summary .sorter {
  11. background-image: url(../../sort-arrow-sprite.png);
  12. }
  13. </style>
  14. </head>
  15. <body>
  16. <div class='wrapper'>
  17. <div class='pad1'>
  18. <h1>
  19. <a href="../../index.html">All files</a> / <a href="index.html">coa/lib</a> coaparam.js
  20. </h1>
  21. <div class='clearfix'>
  22. <div class='fl pad1y space-right2'>
  23. <span class="strong">51.61% </span>
  24. <span class="quiet">Statements</span>
  25. <span class='fraction'>16/31</span>
  26. </div>
  27. <div class='fl pad1y space-right2'>
  28. <span class="strong">0% </span>
  29. <span class="quiet">Branches</span>
  30. <span class='fraction'>0/8</span>
  31. </div>
  32. <div class='fl pad1y space-right2'>
  33. <span class="strong">55.56% </span>
  34. <span class="quiet">Functions</span>
  35. <span class='fraction'>5/9</span>
  36. </div>
  37. <div class='fl pad1y space-right2'>
  38. <span class="strong">51.61% </span>
  39. <span class="quiet">Lines</span>
  40. <span class='fraction'>16/31</span>
  41. </div>
  42. </div>
  43. </div>
  44. <div class='status-line medium'></div>
  45. <pre><table class="coverage">
  46. <tr><td class="line-count quiet">1
  47. 2
  48. 3
  49. 4
  50. 5
  51. 6
  52. 7
  53. 8
  54. 9
  55. 10
  56. 11
  57. 12
  58. 13
  59. 14
  60. 15
  61. 16
  62. 17
  63. 18
  64. 19
  65. 20
  66. 21
  67. 22
  68. 23
  69. 24
  70. 25
  71. 26
  72. 27
  73. 28
  74. 29
  75. 30
  76. 31
  77. 32
  78. 33
  79. 34
  80. 35
  81. 36
  82. 37
  83. 38
  84. 39
  85. 40
  86. 41
  87. 42
  88. 43
  89. 44
  90. 45
  91. 46
  92. 47
  93. 48
  94. 49
  95. 50
  96. 51
  97. 52
  98. 53
  99. 54
  100. 55
  101. 56
  102. 57
  103. 58
  104. 59
  105. 60
  106. 61
  107. 62
  108. 63
  109. 64
  110. 65
  111. 66
  112. 67
  113. 68
  114. 69
  115. 70
  116. 71
  117. 72
  118. 73
  119. 74
  120. 75
  121. 76
  122. 77
  123. 78
  124. 79
  125. 80
  126. 81
  127. 82
  128. 83
  129. 84
  130. 85
  131. 86
  132. 87
  133. 88
  134. 89
  135. 90
  136. 91
  137. 92
  138. 93
  139. 94
  140. 95
  141. 96
  142. 97
  143. 98
  144. 99
  145. 100
  146. 101
  147. 102
  148. 103
  149. 104
  150. 105
  151. 106
  152. 107
  153. 108
  154. 109
  155. 110
  156. 111
  157. 112
  158. 113
  159. 114
  160. 115
  161. 116
  162. 117
  163. 118
  164. 119
  165. 120
  166. 121
  167. 122
  168. 123
  169. 124
  170. 125
  171. 126</td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
  172. <span class="cline-any cline-neutral">&nbsp;</span>
  173. <span class="cline-any cline-yes">1x</span>
  174. <span class="cline-any cline-neutral">&nbsp;</span>
  175. <span class="cline-any cline-yes">1x</span>
  176. <span class="cline-any cline-neutral">&nbsp;</span>
  177. <span class="cline-any cline-neutral">&nbsp;</span>
  178. <span class="cline-any cline-neutral">&nbsp;</span>
  179. <span class="cline-any cline-neutral">&nbsp;</span>
  180. <span class="cline-any cline-neutral">&nbsp;</span>
  181. <span class="cline-any cline-neutral">&nbsp;</span>
  182. <span class="cline-any cline-neutral">&nbsp;</span>
  183. <span class="cline-any cline-neutral">&nbsp;</span>
  184. <span class="cline-any cline-neutral">&nbsp;</span>
  185. <span class="cline-any cline-neutral">&nbsp;</span>
  186. <span class="cline-any cline-neutral">&nbsp;</span>
  187. <span class="cline-any cline-neutral">&nbsp;</span>
  188. <span class="cline-any cline-neutral">&nbsp;</span>
  189. <span class="cline-any cline-neutral">&nbsp;</span>
  190. <span class="cline-any cline-neutral">&nbsp;</span>
  191. <span class="cline-any cline-neutral">&nbsp;</span>
  192. <span class="cline-any cline-neutral">&nbsp;</span>
  193. <span class="cline-any cline-neutral">&nbsp;</span>
  194. <span class="cline-any cline-neutral">&nbsp;</span>
  195. <span class="cline-any cline-yes">1x</span>
  196. <span class="cline-any cline-neutral">&nbsp;</span>
  197. <span class="cline-any cline-yes">32x</span>
  198. <span class="cline-any cline-neutral">&nbsp;</span>
  199. <span class="cline-any cline-yes">32x</span>
  200. <span class="cline-any cline-yes">32x</span>
  201. <span class="cline-any cline-yes">32x</span>
  202. <span class="cline-any cline-yes">32x</span>
  203. <span class="cline-any cline-neutral">&nbsp;</span>
  204. <span class="cline-any cline-neutral">&nbsp;</span>
  205. <span class="cline-any cline-neutral">&nbsp;</span>
  206. <span class="cline-any cline-neutral">&nbsp;</span>
  207. <span class="cline-any cline-neutral">&nbsp;</span>
  208. <span class="cline-any cline-neutral">&nbsp;</span>
  209. <span class="cline-any cline-neutral">&nbsp;</span>
  210. <span class="cline-any cline-neutral">&nbsp;</span>
  211. <span class="cline-any cline-neutral">&nbsp;</span>
  212. <span class="cline-any cline-yes">9x</span>
  213. <span class="cline-any cline-yes">9x</span>
  214. <span class="cline-any cline-neutral">&nbsp;</span>
  215. <span class="cline-any cline-neutral">&nbsp;</span>
  216. <span class="cline-any cline-neutral">&nbsp;</span>
  217. <span class="cline-any cline-neutral">&nbsp;</span>
  218. <span class="cline-any cline-neutral">&nbsp;</span>
  219. <span class="cline-any cline-neutral">&nbsp;</span>
  220. <span class="cline-any cline-neutral">&nbsp;</span>
  221. <span class="cline-any cline-neutral">&nbsp;</span>
  222. <span class="cline-any cline-yes">3x</span>
  223. <span class="cline-any cline-yes">3x</span>
  224. <span class="cline-any cline-neutral">&nbsp;</span>
  225. <span class="cline-any cline-neutral">&nbsp;</span>
  226. <span class="cline-any cline-neutral">&nbsp;</span>
  227. <span class="cline-any cline-neutral">&nbsp;</span>
  228. <span class="cline-any cline-neutral">&nbsp;</span>
  229. <span class="cline-any cline-neutral">&nbsp;</span>
  230. <span class="cline-any cline-neutral">&nbsp;</span>
  231. <span class="cline-any cline-neutral">&nbsp;</span>
  232. <span class="cline-any cline-neutral">&nbsp;</span>
  233. <span class="cline-any cline-neutral">&nbsp;</span>
  234. <span class="cline-any cline-neutral">&nbsp;</span>
  235. <span class="cline-any cline-neutral">&nbsp;</span>
  236. <span class="cline-any cline-neutral">&nbsp;</span>
  237. <span class="cline-any cline-yes">1x</span>
  238. <span class="cline-any cline-yes">1x</span>
  239. <span class="cline-any cline-neutral">&nbsp;</span>
  240. <span class="cline-any cline-neutral">&nbsp;</span>
  241. <span class="cline-any cline-neutral">&nbsp;</span>
  242. <span class="cline-any cline-neutral">&nbsp;</span>
  243. <span class="cline-any cline-neutral">&nbsp;</span>
  244. <span class="cline-any cline-neutral">&nbsp;</span>
  245. <span class="cline-any cline-neutral">&nbsp;</span>
  246. <span class="cline-any cline-neutral">&nbsp;</span>
  247. <span class="cline-any cline-neutral">&nbsp;</span>
  248. <span class="cline-any cline-neutral">&nbsp;</span>
  249. <span class="cline-any cline-yes">1x</span>
  250. <span class="cline-any cline-yes">1x</span>
  251. <span class="cline-any cline-neutral">&nbsp;</span>
  252. <span class="cline-any cline-neutral">&nbsp;</span>
  253. <span class="cline-any cline-neutral">&nbsp;</span>
  254. <span class="cline-any cline-neutral">&nbsp;</span>
  255. <span class="cline-any cline-neutral">&nbsp;</span>
  256. <span class="cline-any cline-neutral">&nbsp;</span>
  257. <span class="cline-any cline-neutral">&nbsp;</span>
  258. <span class="cline-any cline-neutral">&nbsp;</span>
  259. <span class="cline-any cline-neutral">&nbsp;</span>
  260. <span class="cline-any cline-no">&nbsp;</span>
  261. <span class="cline-any cline-no">&nbsp;</span>
  262. <span class="cline-any cline-neutral">&nbsp;</span>
  263. <span class="cline-any cline-neutral">&nbsp;</span>
  264. <span class="cline-any cline-no">&nbsp;</span>
  265. <span class="cline-any cline-no">&nbsp;</span>
  266. <span class="cline-any cline-neutral">&nbsp;</span>
  267. <span class="cline-any cline-no">&nbsp;</span>
  268. <span class="cline-any cline-no">&nbsp;</span>
  269. <span class="cline-any cline-neutral">&nbsp;</span>
  270. <span class="cline-any cline-no">&nbsp;</span>
  271. <span class="cline-any cline-no">&nbsp;</span>
  272. <span class="cline-any cline-no">&nbsp;</span>
  273. <span class="cline-any cline-neutral">&nbsp;</span>
  274. <span class="cline-any cline-neutral">&nbsp;</span>
  275. <span class="cline-any cline-neutral">&nbsp;</span>
  276. <span class="cline-any cline-neutral">&nbsp;</span>
  277. <span class="cline-any cline-neutral">&nbsp;</span>
  278. <span class="cline-any cline-neutral">&nbsp;</span>
  279. <span class="cline-any cline-neutral">&nbsp;</span>
  280. <span class="cline-any cline-neutral">&nbsp;</span>
  281. <span class="cline-any cline-neutral">&nbsp;</span>
  282. <span class="cline-any cline-neutral">&nbsp;</span>
  283. <span class="cline-any cline-no">&nbsp;</span>
  284. <span class="cline-any cline-neutral">&nbsp;</span>
  285. <span class="cline-any cline-neutral">&nbsp;</span>
  286. <span class="cline-any cline-no">&nbsp;</span>
  287. <span class="cline-any cline-no">&nbsp;</span>
  288. <span class="cline-any cline-neutral">&nbsp;</span>
  289. <span class="cline-any cline-no">&nbsp;</span>
  290. <span class="cline-any cline-no">&nbsp;</span>
  291. <span class="cline-any cline-neutral">&nbsp;</span>
  292. <span class="cline-any cline-no">&nbsp;</span>
  293. <span class="cline-any cline-neutral">&nbsp;</span>
  294. <span class="cline-any cline-neutral">&nbsp;</span>
  295. <span class="cline-any cline-neutral">&nbsp;</span>
  296. <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">'use strict';
  297. &nbsp;
  298. const fs = require('fs');
  299. &nbsp;
  300. const CoaObject = require('./coaobject');
  301. &nbsp;
  302. /**
  303. * COA Parameter
  304. *
  305. * Base class for options and arguments
  306. *
  307. * --------|-----|-----|-----
  308. * | Cmd | Opt | Arg
  309. * --------|-----|-----|-----
  310. * arr | | ✓ | ✓
  311. * req | | ✓ | ✓
  312. * val | | ✓ | ✓
  313. * def | | ✓ | ✓
  314. * input | | ✓ | ✓
  315. * output | | ✓ | ✓
  316. *
  317. * @class CoaParam
  318. * @extends CoaObject
  319. */
  320. module.exports = class CoaParam extends CoaObject {
  321. constructor(cmd) {
  322. super(cmd);
  323. &nbsp;
  324. this._arr = false;
  325. this._req = false;
  326. this._val = undefined;
  327. this._def = undefined;
  328. }
  329. &nbsp;
  330. /**
  331. * Makes a param accepts multiple values.
  332. * Otherwise, the value will be used by the latter passed.
  333. *
  334. * @returns {COA.CoaParam} - this instance (for chainability)
  335. */
  336. arr() {
  337. this._arr = true;
  338. return this;
  339. }
  340. &nbsp;
  341. /**
  342. * Makes a param required.
  343. *
  344. * @returns {COA.CoaParam} - this instance (for chainability)
  345. */
  346. req() {
  347. this._req = true;
  348. return this;
  349. }
  350. &nbsp;
  351. /**
  352. * Set a validation (or value) function for param.
  353. * Value from command line passes through before becoming available from API.
  354. * Using for validation and convertion simple types to any values.
  355. *
  356. * @param {Function} val - validating function,
  357. * invoked in the context of option instance
  358. * and has one parameter with value from command line.
  359. * @returns {COA.CoaParam} - this instance (for chainability)
  360. */
  361. val(val) {
  362. this._val = val;
  363. return this;
  364. }
  365. &nbsp;
  366. /**
  367. * Set a default value for param.
  368. * Default value passed through validation function as ordinary value.
  369. *
  370. * @param {*} def - default value of function generator
  371. * @returns {COA.CoaParam} - this instance (for chainability)
  372. */
  373. def(def) {
  374. this._def = def;
  375. return this;
  376. }
  377. &nbsp;
  378. /**
  379. * Make option value inputting stream.
  380. * It's add useful validation and shortcut for STDIN.
  381. *
  382. * @returns {COA.CoaParam} - this instance (for chainability)
  383. */
  384. <span class="fstat-no" title="function not covered" > in</span>put() {
  385. <span class="cstat-no" title="statement not covered" > process.stdin.pause();</span>
  386. <span class="cstat-no" title="statement not covered" > return this</span>
  387. .def(process.stdin)
  388. .val(<span class="fstat-no" title="function not covered" >fu</span>nction(v) {
  389. <span class="cstat-no" title="statement not covered" > if(typeof v !== 'string')</span>
  390. <span class="cstat-no" title="statement not covered" > return v;</span>
  391. &nbsp;
  392. <span class="cstat-no" title="statement not covered" > if(v === '-')</span>
  393. <span class="cstat-no" title="statement not covered" > return process.stdin;</span>
  394. &nbsp;
  395. const s = <span class="cstat-no" title="statement not covered" >fs.createReadStream(v, { encoding : 'utf8' });</span>
  396. <span class="cstat-no" title="statement not covered" > s.pause();</span>
  397. <span class="cstat-no" title="statement not covered" > return s;</span>
  398. });
  399. }
  400. &nbsp;
  401. /**
  402. * Make option value outputing stream.
  403. * It's add useful validation and shortcut for STDOUT.
  404. *
  405. * @returns {COA.CoaParam} - this instance (for chainability)
  406. */
  407. <span class="fstat-no" title="function not covered" > ou</span>tput() {
  408. <span class="cstat-no" title="statement not covered" > return this</span>
  409. .def(process.stdout)
  410. .val(<span class="fstat-no" title="function not covered" >fu</span>nction(v) {
  411. <span class="cstat-no" title="statement not covered" > if(typeof v !== 'string')</span>
  412. <span class="cstat-no" title="statement not covered" > return v;</span>
  413. &nbsp;
  414. <span class="cstat-no" title="statement not covered" > if(v === '-')</span>
  415. <span class="cstat-no" title="statement not covered" > return process.stdout;</span>
  416. &nbsp;
  417. <span class="cstat-no" title="statement not covered" > return fs.createWriteStream(v, { encoding : 'utf8' });</span>
  418. });
  419. }
  420. };
  421. &nbsp;</pre></td></tr>
  422. </table></pre>
  423. <div class='push'></div><!-- for sticky footer -->
  424. </div><!-- /wrapper -->
  425. <div class='footer quiet pad2 space-top1 center small'>
  426. Code coverage
  427. generated by <a href="http://istanbul-js.org/" target="_blank">istanbul</a> at Fri Feb 17 2017 22:25:28 GMT+0300 (MSK)
  428. </div>
  429. </div>
  430. <script src="../../prettify.js"></script>
  431. <script>
  432. window.onload = function () {
  433. if (typeof prettyPrint === 'function') {
  434. prettyPrint();
  435. }
  436. };
  437. </script>
  438. <script src="../../sorter.js"></script>
  439. </body>
  440. </html>