diff options
| author | Michael Williamson <mike@zwobble.org> | 2015-10-05 22:26:29 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2015-10-05 22:26:29 +0100 |
| commit | 166a205aeb4c595b40b8ffe4c7d745b13031e3b3 (patch) | |
| tree | aa493482f4ca312c1f23913ebc2f57b71d8aa590 /src/main/java/org/zwobble/couscous/backends/python/PythonCompiler.java | |
| parent | 44e4b877baea47c0465e1029bdbedc848381999f (diff) | |
Add support for static method calls to Python backend
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)); } } |
