Skip to content

Commit f8ea271

Browse files
committed
functions separated and fixed
1 parent bf58432 commit f8ea271

File tree

3 files changed

+29
-82
lines changed

3 files changed

+29
-82
lines changed

.DS_Store

6 KB
Binary file not shown.

implement-shell-tools/.DS_Store

6 KB
Binary file not shown.

implement-shell-tools/cat/index.js

Lines changed: 29 additions & 82 deletions
Original file line numberDiff line numberDiff line change
@@ -1,87 +1,34 @@
1-
import process from "node:process";
21
import { 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

Comments
 (0)