File tree Expand file tree Collapse file tree
implement-shell-tools/cat Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -3,33 +3,41 @@ const fs = require("fs");
33const args = process . argv . slice ( 2 ) ;
44
55let mode = "normal" ;
6+ let files = [ ] ;
67
7- if ( args [ 0 ] === "-b" ) {
8+ if ( args [ 0 ] === "-n" ) {
9+ mode = "number" ;
10+ files = args . slice ( 1 ) ;
11+ } else if ( args [ 0 ] === "-b" ) {
812 mode = "numberNonEmpty" ;
13+ files = args . slice ( 1 ) ;
14+ } else {
15+ files = args ;
916}
1017
11- const files = args . slice ( 1 ) ;
12-
1318let lineNum = 1 ;
1419
1520for ( const file of files ) {
16-
1721 const content = fs . readFileSync ( file , "utf8" ) ;
1822
19- const lines = content . trimEnd ( ) . split ( "\n" ) ;
23+ const lines = content . replace ( / \n $ / , "" ) . split ( "\n" ) ;
2024
21- for ( const line of lines ) {
22-
23- if ( mode === "numberNonEmpty" ) {
25+ if ( mode === "normal" ) {
26+ console . log ( content ) ;
27+ continue ;
28+ }
2429
25- if ( line !== "" ) {
26- console . log ( lineNum + " " + line ) ;
27- lineNum ++ ;
30+ for ( const line of lines ) {
31+ if ( mode === "number" ) {
32+ console . log ( `${ String ( lineNum ) . padStart ( 6 ) } ${ line } ` ) ;
33+ lineNum ++ ;
34+ } else if ( mode === "numberNonEmpty" ) {
35+ if ( line === "" ) {
36+ console . log ( "" ) ;
2837 } else {
29- console . log ( line ) ;
38+ console . log ( `${ String ( lineNum ) . padStart ( 6 ) } ${ line } ` ) ;
39+ lineNum ++ ;
3040 }
31-
3241 }
33-
3442 }
3543}
You can’t perform that action at this time.
0 commit comments