diff options
Diffstat (limited to 'umlgen/src/main/java/moe/yuuta/umlgen/Visitor.kt')
-rw-r--r-- | umlgen/src/main/java/moe/yuuta/umlgen/Visitor.kt | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/umlgen/src/main/java/moe/yuuta/umlgen/Visitor.kt b/umlgen/src/main/java/moe/yuuta/umlgen/Visitor.kt new file mode 100644 index 0000000..ea99b99 --- /dev/null +++ b/umlgen/src/main/java/moe/yuuta/umlgen/Visitor.kt @@ -0,0 +1,37 @@ +package moe.yuuta.umlgen + +import java.io.IOException +import java.nio.charset.StandardCharsets +import java.nio.file.* +import java.nio.file.attribute.BasicFileAttributes +import java.util.function.BiFunction + +class Visitor(private val consumer: BiFunction<Path, String, Void?>) : FileVisitor<Path> { + @Throws(IOException::class) + override fun preVisitDirectory(path: Path, basicFileAttributes: BasicFileAttributes): FileVisitResult { + return FileVisitResult.CONTINUE + } + + @Throws(IOException::class) + override fun visitFileFailed(path: Path, e: IOException?): FileVisitResult { + System.err.printf("Open %s: %s\n", path.toFile(), e?.message) + return FileVisitResult.CONTINUE + } + + @Throws(IOException::class) + override fun postVisitDirectory(path: Path, e: IOException?): FileVisitResult { + return FileVisitResult.CONTINUE + } + + @Throws(IOException::class) + override fun visitFile(path: Path, basicFileAttributes: BasicFileAttributes?): FileVisitResult { + if (path.fileName.endsWith(".java")) { + return FileVisitResult.CONTINUE + } + val fd = Files.newInputStream(path, StandardOpenOption.READ) + val buf = String(fd.readAllBytes(), StandardCharsets.UTF_8) + fd.close() + consumer.apply(path, buf) + return FileVisitResult.CONTINUE + } +} |