1- import process from "node:process" ;
21import { promises as fs } from "node:fs" ;
32
4-
5- //one for 1 and 3
6- async function printOneOrMore ( listOfFiles ) {
7- for ( const file of listOfFiles ) {
8- const content = await fs . readFile ( file , "utf-8" ) ;
9- console . log ( content ) ;
10- }
11- }
12-
13-
14- // // 2 * `cat -n sample-files/1.txt`
15- // async function caseTwo(oneFile) {
16- // const content = await fs.readFile(oneFile, "utf-8");
17- // const separatedToLines = content.split('\n')
18- // separatedToLines.forEach((line, index) => {
19- // console.log(`${index + 1} ${line}`)
20- // })
21- // }
22-
23- // // 4 * `cat -n sample-files/*.txt`
24- // async function caseFour(listOfFiles) {
25- // for (const file of listOfFiles) {
26- // const content = await fs.readFile(one, "utf-8");
27-
28- // const separatedToLines = content.split('\n')
29- // separatedToLines.forEach((line, index) => {
30- // console.log(`${index + 1} ${line}`)
31- // })
32- // }
33-
34- // }
35-
36- //one instead
37- // 2 * `cat -n sample-files/1.txt`
38- // 4 * `cat -n sample-files/*.txt`
39-
40- async function caseTwoAndFour ( listOfFiles ) {
41- for ( const file of listOfFiles ) {
42- const content = await fs . readFile ( file , "utf-8" ) ;
43-
44- const separatedToLines = content . split ( '\n' )
45- separatedToLines . forEach ( ( line , index ) => {
46- console . log ( `${ index + 1 } ${ line } ` )
47- } )
3+ async function cleanInput ( listOfFiles ) {
4+ let cleanLinesArr = [ ] ;
5+ for ( const file of listOfFiles ) {
6+ const grabbedText = await fs . readFile ( file , "utf-8" ) ;
7+ const splitLines = grabbedText . split ( "\n" ) ;
8+ cleanLinesArr . push ( ...splitLines ) ;
9+ }
10+ return cleanLinesArr ;
4811}
49-
50- }
51-
52- // `cat -b sample-files/3.txt`
53- async function caseFive ( listOfFiles ) {
54- for ( const file of listOfFiles ) {
55- const content = await fs . readFile ( file , "utf-8" ) ;
56- const separatedToLines = content . split ( '\n' ) ;
57-
58- let countingOnlyFullLines = 1
59- separatedToLines . forEach ( ( line , index ) => {
60- if ( line !== '' ) {
61- console . log ( `${ countingOnlyFullLines } ${ line } ` )
62- countingOnlyFullLines ++
63- } else {
64- console . log ( '' )
65- }
66-
67- } )
68- }
6912
13+ function takeSpecifiedAction ( cleanLinesArr , flag ) {
14+ let countingOnlyFullLines = 1 ;
15+
16+ for ( const file of cleanLinesArr ) {
17+ // Task: We recommend you start off supporting no flags, then add support for `-n`, then add support for `-b`.
18+ if ( ! flag ) {
19+ console . log ( file ) ;
20+ } else if ( flag === "-n" ) {
21+ console . log ( `${ countingOnlyFullLines } ${ file } ` ) ;
22+ countingOnlyFullLines += 1 ;
23+ } else if ( flag === "-b" ) {
24+ if ( file === "" ) {
25+ console . log ( "" ) ;
26+ } else {
27+ console . log ( `${ countingOnlyFullLines } ${ file } ` ) ;
28+ countingOnlyFullLines += 1 ;
29+ }
30+ } else {
31+ console . log ( "incorrect flag" ) ;
32+ }
33+ }
7034}
71-
72-
73- const argv = process . argv . slice ( 2 ) ;
74-
75- switch ( argv [ 0 ] ) {
76- case '-n' :
77- await caseTwoAndFour ( argv . slice ( 1 ) ) ;
78- break ;
79-
80- case '-b' :
81- await caseFive ( argv . slice ( 1 ) ) ;
82- break ;
83-
84- default :
85- await printOneOrMore ( argv ) ;
86- break ;
87- }
0 commit comments