aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/zwobble/couscous/backends/python/PythonCompiler.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/org/zwobble/couscous/backends/python/PythonCompiler.java')
-rw-r--r--src/main/java/org/zwobble/couscous/backends/python/PythonCompiler.java29
1 files changed, 22 insertions, 7 deletions
diff --git a/src/main/java/org/zwobble/couscous/backends/python/PythonCompiler.java b/src/main/java/org/zwobble/couscous/backends/python/PythonCompiler.java
index b38bc73..a54f037 100644
--- a/src/main/java/org/zwobble/couscous/backends/python/PythonCompiler.java
+++ b/src/main/java/org/zwobble/couscous/backends/python/PythonCompiler.java
@@ -15,20 +15,35 @@ import lombok.SneakyThrows;
import lombok.val;
public class PythonCompiler {
- public void compile(List<ClassNode> classes, Path path) {
+ private final Path root;
+
+ public PythonCompiler(Path root) {
+ this.root = root;
+ }
+
+ public void compile(List<ClassNode> classes) {
for (val classNode : classes) {
- compileClass(classNode, pathForClass(classNode, path));
+ compileClass(classNode);
}
+ writeClass("java.lang.Integer",
+ "class Integer(object):\n" +
+ " def parseInt(value):\n" +
+ " return int(value)"
+ );
+ }
+
+ private Path pathForClass(String className) {
+ return root.resolve(className.replace(".", File.separator) + ".py");
}
- private Path pathForClass(ClassNode classNode, Path path) {
- return path.resolve(classNode.getName().replace(".", File.separator) + ".py");
+ private void compileClass(ClassNode classNode) {
+ writeClass(classNode.getName(), serialize(generateCode(classNode)));
}
@SneakyThrows
- private void compileClass(ClassNode classNode, Path path) {
+ private void writeClass(String name, String contents) {
+ val path = pathForClass(name);
Files.createDirectories(path.getParent());
- Files.write(path, asList(serialize(generateCode(classNode))));
-
+ Files.write(path, asList(contents));
}
}