diff options
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.java | 29 |
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)); } } |
