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; + } }