diff options
Diffstat (limited to 'umlgen/src/main/java/moe/yuuta/umlgen/ClassItem.kt')
-rw-r--r-- | umlgen/src/main/java/moe/yuuta/umlgen/ClassItem.kt | 21 |
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) +} |