aboutsummaryrefslogtreecommitdiff
path: root/umlgen/src/main/java/moe/yuuta/umlgen/ClassItem.kt
diff options
context:
space:
mode:
authorYuuta Liang <yuutaw@student.cs.ubc.ca>2023-11-28 21:00:25 -0800
committerYuuta Liang <yuutaw@student.cs.ubc.ca>2023-11-28 21:00:25 -0800
commitc992db275494b05627248cd741adac5d7c199603 (patch)
treef259bb943512007cbc9b50ddf8013d6e3f8b9008 /umlgen/src/main/java/moe/yuuta/umlgen/ClassItem.kt
parent1073af21305360bd33903c533cdac57e9f936294 (diff)
downloadjca-c992db275494b05627248cd741adac5d7c199603.tar
jca-c992db275494b05627248cd741adac5d7c199603.tar.gz
jca-c992db275494b05627248cd741adac5d7c199603.tar.bz2
jca-c992db275494b05627248cd741adac5d7c199603.zip
Add UML generator
Signed-off-by: Yuuta Liang <yuutaw@student.cs.ubc.ca>
Diffstat (limited to 'umlgen/src/main/java/moe/yuuta/umlgen/ClassItem.kt')
-rw-r--r--umlgen/src/main/java/moe/yuuta/umlgen/ClassItem.kt21
1 files changed, 21 insertions, 0 deletions
diff --git a/umlgen/src/main/java/moe/yuuta/umlgen/ClassItem.kt b/umlgen/src/main/java/moe/yuuta/umlgen/ClassItem.kt
new file mode 100644
index 0000000..245f0e0
--- /dev/null
+++ b/umlgen/src/main/java/moe/yuuta/umlgen/ClassItem.kt
@@ -0,0 +1,21 @@
+package moe.yuuta.umlgen
+
+import com.github.javaparser.ast.body.ClassOrInterfaceDeclaration
+import com.github.javaparser.ast.body.EnumDeclaration
+
+/**
+ * Represent a class with abstract / interface tag, or no tag.
+ */
+@JvmRecord
+data class ClassItem(val name: String, val tag: String?) {
+ /**
+ * Automatically determine if the class is abstract, interface, or else, and set the tag.
+ */
+ constructor(cls: ClassOrInterfaceDeclaration): this(cls.nameAsString,
+ if (cls.isAbstract) "abstract" else if (cls.isInterface) "interface" else null)
+
+ /**
+ * For enum, use null as tag.
+ */
+ constructor(cls: EnumDeclaration): this(cls.nameAsString, null)
+}