Skip to content

Commit 4fb13cd

Browse files
committed
wc fixed
1 parent 5e48487 commit 4fb13cd

File tree

3 files changed

+62
-119
lines changed

3 files changed

+62
-119
lines changed

implement-shell-tools/cat/notes.js

Lines changed: 0 additions & 46 deletions
This file was deleted.

implement-shell-tools/ls/index.js

Lines changed: 22 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,49 +1,41 @@
1-
// fs.readdir
21
import process from "node:process";
32
import { promises as fs } from "node:fs";
43

5-
64
// `ls -1`
75
async function showAllFilesInDir(directory) {
8-
const listOfFiles = await fs.readdir(directory);
9-
10-
for (const eachFile of listOfFiles) {
11-
console.log(eachFile);
12-
}
6+
const listOfFiles = await fs.readdir(directory);
7+
8+
for (const eachFile of listOfFiles) {
9+
if (eachFile[0] !== ".") console.log(eachFile);
10+
}
1311
}
1412

1513
// `ls -1 sample-files`
1614
async function showVisibleInSampleFiles() {
17-
const listOfFiles = await fs.readdir('sample-files');
18-
19-
for (const eachFile of listOfFiles) {
20-
if (eachFile[0] !== '.') {
21-
console.log(eachFile);
22-
}
23-
24-
}
25-
}
15+
const listOfFiles = await fs.readdir("sample-files");
2616

17+
for (const eachFile of listOfFiles) {
18+
if (eachFile[0] !== ".") {
19+
console.log(eachFile);
20+
}
21+
}
22+
}
2723

2824
// `ls -1 -a sample-files`
2925
async function showAllInSampleFiles() {
30-
const listOfFiles = await fs.readdir('sample-files');
31-
32-
for (const eachFile of listOfFiles) {
33-
34-
console.log(eachFile);
35-
36-
}
37-
}
38-
26+
const listOfFiles = await fs.readdir("sample-files");
3927

28+
for (const eachFile of listOfFiles) {
29+
console.log(eachFile);
30+
}
31+
}
4032

4133
const argv = process.argv.slice(2);
4234

43-
if (argv.includes('-a')) {
44-
await showAllInSampleFiles();
45-
} else if (argv.includes('sample-files')) {
46-
await showVisibleInSampleFiles();
35+
if (argv.includes("-a")) {
36+
await showAllInSampleFiles();
37+
} else if (argv.includes("sample-files")) {
38+
await showVisibleInSampleFiles();
4739
} else {
48-
await showCurrentDir();
40+
await showAllFilesInDir(".");
4941
}

implement-shell-tools/wc/index.js

Lines changed: 40 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -9,69 +9,66 @@ import { promises as fs } from "node:fs";
99
// .length;
1010
// console.log(countOfWordsContainingEs);
1111

12-
function countHelper(inputFiles) {
13-
return {
14-
lines: inputFiles.split('\n').length - 1,
15-
words: inputFiles.split(' ').filter(w => w !== "").length,
16-
bytes: inputFiles.length,
17-
};
12+
function calculateCounts(inputFiles) {
13+
return {
14+
lines: inputFiles.split("\n").length - 1,
15+
words: inputFiles.split(/\s+/).filter((w) => w !== "").length,
16+
bytes: inputFiles.length,
17+
};
1818
}
1919

20-
2120
// * `wc -l sample-files/3.txt`
2221
// * `wc -l sample-files/*`
2322
async function countLines(listOfFiles) {
24-
for (const file of listOfFiles) {
25-
const content = await fs.readFile(file, "utf-8");
23+
for (const file of listOfFiles) {
24+
const content = await fs.readFile(file, "utf-8");
2625

27-
// const linesNumbered = content.split('\n').length-1
28-
const counts = countHelper(content);
29-
console.log(`${counts.lines} ${file}`)
30-
}
26+
// const linesNumbered = content.split('\n').length-1
27+
const counts = calculateCounts(content);
28+
console.log(`${counts.lines} ${file}`);
29+
}
3130
}
3231

3332
// * `wc -w sample-files/3.txt`
3433
async function countWords(listOfFiles) {
35-
for (const file of listOfFiles) {
36-
const content = await fs.readFile(file, "utf-8");
37-
38-
// const wordsCounted = content.split(" ").filter(word => word !== "").length;
39-
// console.log(`${wordsCounted} ${file}`);
40-
const counts = countHelper(content);
41-
console.log(`${counts.words} ${file}`);
42-
}
43-
34+
for (const file of listOfFiles) {
35+
const content = await fs.readFile(file, "utf-8");
36+
37+
// const wordsCounted = content.split(" ").filter(word => word !== "").length;
38+
// console.log(`${wordsCounted} ${file}`);
39+
const counts = calculateCounts(content);
40+
console.log(`${counts.words} ${file}`);
41+
}
4442
}
4543

4644
// * `wc -c sample-files/3.txt`
4745
async function countBytes(listOfFiles) {
48-
for (const file of listOfFiles) {
49-
const content = await fs.readFile(file, "utf-8");
50-
// const bytesCounted = content.length;
51-
const counts = countHelper(content);
52-
console.log(`${counts.bytes} ${file}`);
53-
}
46+
for (const file of listOfFiles) {
47+
const content = await fs.readFile(file, "utf-8");
48+
// const bytesCounted = content.length;
49+
const counts = calculateCounts(content);
50+
console.log(`${counts.bytes} ${file}`);
51+
}
5452
}
5553

5654
// * `wc sample-files/*`
5755
async function countAll(listOfFiles) {
58-
for (const file of listOfFiles) {
59-
const content = await fs.readFile(file, "utf-8");
60-
const counts = countHelper(content)
61-
62-
console.log(`${counts.lines} ${counts.words} ${counts.bytes} ${file}`);
63-
}
56+
for (const file of listOfFiles) {
57+
const content = await fs.readFile(file, "utf-8");
58+
const counts = calculateCounts(content);
59+
console.log(`${counts.lines} ${counts.words} ${counts.bytes} ${file}`);
60+
}
6461
}
6562

6663
const argv = process.argv.slice(2);
67-
const files = argv.filter(arg => !arg.startsWith('-'));
64+
const files = argv.filter((arg) => !arg.startsWith("-"));
6865

69-
if (argv.includes('-l')) {
70-
await countLines(files);
71-
} else if (argv.includes('-w')) {
72-
await countWords(files);
73-
} else if (argv.includes('-c')) {
74-
await countBytes(files);
66+
if (argv.includes("-l")) {
67+
await countLines(files);
68+
} else if (argv.includes("-w")) {
69+
await countWords(files);
70+
} else if (argv.includes("-c")) {
71+
await countBytes(files);
7572
} else {
76-
await countAll(files);
77-
}
73+
await countAll(files);
74+
}

0 commit comments

Comments
 (0)