aboutsummaryrefslogtreecommitdiff
path: root/umlgen/src/main/java/moe/yuuta/umlgen/ClassItem.kt
diff options
context:
space:
mode:
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)
+}