AzLearn

تمرين إعادة البناء

File Line Counter

أعد كتابة أداة TypeScript تحسب الأسطر والكلمات والمحارف في ملف.

typescript ~12 دقيقة مبتدئ
أعد بناء الكود Rebuild

هذا هو الكود. اكتبه بنفسك.

الكود المرجعي
declare const process: {
  argv: string[];
  exit(code?: number): never;
};

type FileSystemModule = {
  readFileSync(path: string, encoding: "utf8"): string;
};

declare function require(name: "fs"): FileSystemModule;

type FileStats = {
  lines: number;
  words: number;
  characters: number;
};

const fs = require("fs");

function countText(text: string): FileStats {
  const trimmed = text.trim();

  return {
    lines: text.length === 0 ? 0 : text.split(/\r?\n/).length,
    words: trimmed.length === 0 ? 0 : trimmed.split(/\s+/).length,
    characters: text.length,
  };
}

function main(): void {
  const filePath = process.argv[2];

  if (!filePath) {
    console.log("Usage: ts-node file-line-counter.ts notes.txt");
    return;
  }

  const text = fs.readFileSync(filePath, "utf8");
  const stats = countText(text);

  console.log(`Lines: ${stats.lines}`);
  console.log(`Words: ${stats.words}`);
  console.log(`Characters: ${stats.characters}`);
}

main();
اكتب هنا