Skip to content

Commit 8b8a2e6

Browse files
committed
Finilise the cat.js programm that works for the commands.
1 parent 10353a9 commit 8b8a2e6

1 file changed

Lines changed: 22 additions & 14 deletions

File tree

  • implement-shell-tools/cat

implement-shell-tools/cat/cat.js

Lines changed: 22 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -3,33 +3,41 @@ const fs = require("fs");
33
const args = process.argv.slice(2);
44

55
let 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-
1318
let lineNum = 1;
1419

1520
for (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
}

0 commit comments

Comments
 (0)