From f398933835e7fa7a80b0abd7feda6790370804c8 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sat, 7 Nov 2015 23:20:05 +0000 Subject: Extract Frontend interface from JavaFrontend --- src/main/java/org/zwobble/couscous/CouscousCompiler.java | 7 ++++--- src/main/java/org/zwobble/couscous/Frontend.java | 11 +++++++++++ .../org/zwobble/couscous/frontends/java/JavaFrontend.java | 8 +++++--- 3 files changed, 20 insertions(+), 6 deletions(-) create mode 100644 src/main/java/org/zwobble/couscous/Frontend.java (limited to 'src/main/java/org') diff --git a/src/main/java/org/zwobble/couscous/CouscousCompiler.java b/src/main/java/org/zwobble/couscous/CouscousCompiler.java index a1e0787..39c1709 100644 --- a/src/main/java/org/zwobble/couscous/CouscousCompiler.java +++ b/src/main/java/org/zwobble/couscous/CouscousCompiler.java @@ -5,17 +5,18 @@ import java.nio.file.Path; import java.util.List; import org.zwobble.couscous.ast.ClassNode; -import org.zwobble.couscous.frontends.java.JavaFrontend; public class CouscousCompiler { + private final Frontend frontend; private final Backend backend; - public CouscousCompiler(Backend backend) { + public CouscousCompiler(Frontend frontend, Backend backend) { + this.frontend = frontend; this.backend = backend; } public void compileDirectory(Path path) throws IOException { - List classes = JavaFrontend.readSourceDirectory(path); + List classes = frontend.readSourceDirectory(path); backend.compile(classes); } diff --git a/src/main/java/org/zwobble/couscous/Frontend.java b/src/main/java/org/zwobble/couscous/Frontend.java new file mode 100644 index 0000000..9d823bc --- /dev/null +++ b/src/main/java/org/zwobble/couscous/Frontend.java @@ -0,0 +1,11 @@ +package org.zwobble.couscous; + +import java.io.IOException; +import java.nio.file.Path; +import java.util.List; + +import org.zwobble.couscous.ast.ClassNode; + +public interface Frontend { + List readSourceDirectory(Path path) throws IOException; +} diff --git a/src/main/java/org/zwobble/couscous/frontends/java/JavaFrontend.java b/src/main/java/org/zwobble/couscous/frontends/java/JavaFrontend.java index f58e6af..2a842c9 100644 --- a/src/main/java/org/zwobble/couscous/frontends/java/JavaFrontend.java +++ b/src/main/java/org/zwobble/couscous/frontends/java/JavaFrontend.java @@ -6,18 +6,20 @@ import java.nio.file.Path; import java.util.List; import java.util.stream.Stream; +import org.zwobble.couscous.Frontend; import org.zwobble.couscous.ast.ClassNode; import org.zwobble.couscous.util.ExtraLists; -public class JavaFrontend { - public static List readSourceDirectory(Path directoryPath) throws IOException { +public class JavaFrontend implements Frontend { + @Override + public List readSourceDirectory(Path directoryPath) throws IOException { JavaReader reader = new JavaReader(); return ExtraLists.map( findJavaFiles(directoryPath), javaFile -> reader.readClassFromFile(directoryPath, javaFile)); } - private static Stream findJavaFiles(Path directoryPath) throws IOException { + private Stream findJavaFiles(Path directoryPath) throws IOException { return Files.walk(directoryPath) .filter(path -> path.toFile().isFile() && path.toString().endsWith(".java")); } -- cgit v1.2.3