From 21f120ce94713e3c89b52246cea9cb13dea20248 Mon Sep 17 00:00:00 2001 From: Jonas_Jones Date: Tue, 4 Mar 2025 20:29:33 +0100 Subject: [PATCH] added proper interface support --- puml_generator.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/puml_generator.py b/puml_generator.py index 1a23c74..5279ca5 100644 --- a/puml_generator.py +++ b/puml_generator.py @@ -89,7 +89,7 @@ def get_field_visibility(line): return None # Return None if it's not a field declaration -def is_line_method_declaration(line:str) -> bool: +def is_line_method_declaration(line:str, class_type:str) -> bool: """ Check if a line is a method declaration. @@ -97,6 +97,10 @@ def is_line_method_declaration(line:str) -> bool: :return: True if the line is a method declaration, False otherwise. """ method_pattern = re.compile(r'^\s*(public|private|protected|\s)*\s*(static|final|\s)*\s*(\w[\w\d]*)\s+(\w[\w\d]*)\s*\(.*\)\s*{') + + if class_type == "interface": + method_pattern = re.compile(r'^[a-zA-Z_][a-zA-Z0-9_]*\s+[a-zA-Z_][a-zA-Z0-9_]*\(\)\s*;$') + match = method_pattern.match(line.strip()) return match is not None @@ -305,6 +309,7 @@ def class_to_puml(filename:str, base_package_slug:str) -> JavaClass: class_type = "enum" elif " interface " in javaline: class_type = "interface" + reached_class = True elif " class " in javaline: reached_class = True elif is_line_field_declaration(javaline): @@ -317,7 +322,7 @@ def class_to_puml(filename:str, base_package_slug:str) -> JavaClass: if class_setter: class_methods[f"set{field_name.capitalize()}"] = visibility - elif is_line_method_declaration(javaline): + elif is_line_method_declaration(javaline, class_type=class_type): visibility = get_method_visibility(javaline) method_name = get_method_name_from_line(javaline) if method_name != class_name: