diff --git a/Lab3/src/main/java/org/lumijiez/base/CodeFile.java b/Lab3/src/main/java/org/lumijiez/base/CodeFile.java
index 9e5703f..db20eec 100644
--- a/Lab3/src/main/java/org/lumijiez/base/CodeFile.java
+++ b/Lab3/src/main/java/org/lumijiez/base/CodeFile.java
@@ -16,6 +16,8 @@ public class CodeFile extends Document{
info.append("Extension: ").append(getExtension().toUpperCase()).append("
");
info.append("File size: ").append(getFilesizeKB()).append(" KB").append("
");
info.append("Lines: ").append(Utils.countLines(this)).append("
");
+ info.append("Classes: ").append(Utils.countClasses(this)).append("
");
+ info.append("Methods: ").append(Utils.countMethods(this)).append("
");
info.append("Created at: ").append(getCreatedTime()).append("
");
info.append("Modified at: ").append(getModificationTime()).append("
");
return info.toString();
diff --git a/Lab3/src/main/java/org/lumijiez/util/Utils.java b/Lab3/src/main/java/org/lumijiez/util/Utils.java
index e51298a..2a6f6bc 100644
--- a/Lab3/src/main/java/org/lumijiez/util/Utils.java
+++ b/Lab3/src/main/java/org/lumijiez/util/Utils.java
@@ -45,7 +45,48 @@ public class Utils {
} catch (IOException e) {
throw new RuntimeException(e);
}
-
}
+ public static int countClasses(Document doc) {
+ try {
+ int classCount = 0;
+
+ BufferedReader reader = new BufferedReader(new FileReader(doc));
+ String line;
+
+ while ((line = reader.readLine()) != null) {
+ if (line.contains("class ")) {
+ classCount++;
+ }
+ }
+ reader.close();
+ return classCount;
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ return 0;
+ }
+
+ public static int countMethods(Document doc) {
+ try {
+ int methodCount = 0;
+
+ BufferedReader reader = new BufferedReader(new FileReader(doc));
+ String line;
+
+ while ((line = reader.readLine()) != null) {
+ if (line.matches(".*\\b\\w+\\s+\\w+\\(.*\\)\\s*\\{.*")) {
+ methodCount++;
+ } else if (line.contains("def ")) {
+ methodCount++;
+ }
+ }
+
+ reader.close();
+ return methodCount;
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ return 0;
+ }
}