@@ -34,19 +34,74 @@ var namespace = require( './../lib' );
3434var FIELDS = [ 'alias' , 'path' , 'type' , 'related' ] ;
3535
3636
37+ // FUNCTIONS //
38+
39+ /**
40+ * Prints data as newline-delimited JSON (ndjson).
41+ *
42+ * @private
43+ * @param {ObjectArray } data - data to print
44+ */
45+ function ndjson ( data ) {
46+ var i ;
47+
48+ for ( i = 0 ; i < data . length ; i ++ ) {
49+ console . log ( JSON . stringify ( data [ i ] ) ) ;
50+ }
51+ }
52+
53+ /**
54+ * Prints data as lines of comma-separated values (CSV).
55+ *
56+ * @private
57+ * @param {ObjectArray } data - data to print
58+ * @param {StringArray } fields - output fields
59+ */
60+ function csv ( data , fields ) {
61+ var line ;
62+ var f ;
63+ var i ;
64+ var j ;
65+ var n ;
66+ var m ;
67+
68+ n = fields . length ;
69+ m = n - 1 ;
70+ line = '' ;
71+ for ( j = 0 ; j < n ; j ++ ) {
72+ line += '"' + fields [ j ] + '"' ;
73+ if ( j < m ) {
74+ line += ',' ;
75+ }
76+ }
77+ console . log ( line ) ;
78+ for ( i = 0 ; i < data . length ; i ++ ) {
79+ line = '' ;
80+ for ( j = 0 ; j < n ; j ++ ) {
81+ f = fields [ j ] ;
82+ line += '"' + data [ i ] [ f ] + '"' ;
83+ if ( j < m ) {
84+ line += ',' ;
85+ }
86+ }
87+ console . log ( line ) ;
88+ }
89+ }
90+
91+
3792// MAIN //
3893
3994/**
4095* Main execution sequence.
4196*
4297* @private
43- * @throws {Error } unrecognized/unsupported field
4498* @returns {void }
4599*/
46100function main ( ) {
47101 var fields ;
48102 var flags ;
49103 var cli ;
104+ var err ;
50105 var i ;
51106
52107 // Create a command-line interface:
@@ -67,64 +122,13 @@ function main() {
67122 fields = flags . fields . split ( ',' ) ;
68123 for ( i = 0 ; i < fields . length ; i ++ ) {
69124 if ( indexOf ( FIELDS , fields [ i ] ) === - 1 ) {
70- throw new Error ( 'invalid option. Unrecognized/unsupported field. Option: `' + fields [ i ] + '`.' ) ;
125+ err = new Error ( 'invalid option. Unrecognized/unsupported field. Option: `' + fields [ i ] + '`.' ) ;
126+ return cli . error ( err ) ;
71127 }
72128 }
73129 return csv ( namespace ( ) , fields ) ;
74130 }
75131 ndjson ( namespace ( ) ) ;
76-
77- /**
78- * Prints data as newline-delimited JSON (ndjson).
79- *
80- * @private
81- * @param {ObjectArray } data - data to print
82- */
83- function ndjson ( data ) {
84- var i ;
85-
86- for ( i = 0 ; i < data . length ; i ++ ) {
87- console . log ( JSON . stringify ( data [ i ] ) ) ;
88- }
89- }
90-
91- /**
92- * Prints data as lines of comma-separated values (CSV).
93- *
94- * @private
95- * @param {ObjectArray } data - data to print
96- * @param {StringArray } fields - output fields
97- */
98- function csv ( data , fields ) {
99- var line ;
100- var f ;
101- var i ;
102- var j ;
103- var n ;
104- var m ;
105-
106- n = fields . length ;
107- m = n - 1 ;
108- line = '' ;
109- for ( j = 0 ; j < n ; j ++ ) {
110- line += '"' + fields [ j ] + '"' ;
111- if ( j < m ) {
112- line += ',' ;
113- }
114- }
115- console . log ( line ) ;
116- for ( i = 0 ; i < data . length ; i ++ ) {
117- line = '' ;
118- for ( j = 0 ; j < n ; j ++ ) {
119- f = fields [ j ] ;
120- line += '"' + data [ i ] [ f ] + '"' ;
121- if ( j < m ) {
122- line += ',' ;
123- }
124- }
125- console . log ( line ) ;
126- }
127- }
128132}
129133
130134main ( ) ;
0 commit comments