aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/org')
-rw-r--r--src/main/java/org/zwobble/couscous/CouscousCompiler.java7
-rw-r--r--src/main/java/org/zwobble/couscous/Frontend.java11
-rw-r--r--src/main/java/org/zwobble/couscous/frontends/java/JavaFrontend.java8
3 files changed, 20 insertions, 6 deletions
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<ClassNode> classes = JavaFrontend.readSourceDirectory(path);
+ List<ClassNode> 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<ClassNode> 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<ClassNode> readSourceDirectory(Path directoryPath) throws IOException {
+public class JavaFrontend implements Frontend {
+ @Override
+ public List<ClassNode> readSourceDirectory(Path directoryPath) throws IOException {
JavaReader reader = new JavaReader();
return ExtraLists.map(
findJavaFiles(directoryPath),
javaFile -> reader.readClassFromFile(directoryPath, javaFile));
}
- private static Stream<Path> findJavaFiles(Path directoryPath) throws IOException {
+ private Stream<Path> findJavaFiles(Path directoryPath) throws IOException {
return Files.walk(directoryPath)
.filter(path -> path.toFile().isFile() && path.toString().endsWith(".java"));
}