- commit
- dffceeaf3b25877e7cb1d11675ab6ddeee5e6164
- parent
- 68512ded080190cc589b5e36ba61f0d701362742
- Author
- Tobias Bengfort <tobias.bengfort@posteo.de>
- Date
- 2022-08-26 17:07
return str from renderer
Diffstat
| M | xipd/renderer.py | 26 | +++++++++++++------------- |
1 files changed, 13 insertions, 13 deletions
diff --git a/xipd/renderer.py b/xipd/renderer.py
@@ -6,18 +6,9 @@ from .parser import Parser 6 6 class Scope: 7 7 def __init__(self, parent=None): 8 8 self.parent = parent9 -1 self._node_count = 010 9 self._refs = {} 11 10 self._funcs = {} 12 1113 -1 @property14 -1 def root(self):15 -1 return self.parent.root if self.parent else self16 -117 -1 def create_node(self):18 -1 self.root._node_count += 119 -1 return self.root._node_count - 120 -121 12 def add_ref(self, name, ref): 22 13 self._refs[name] = ref 23 14 @@ -46,8 +37,12 @@ class Renderer: 46 37 def __init__(self): 47 38 self.parser = Parser() 48 39 -1 40 def create_node(self): -1 41 self.node_count += 1 -1 42 return self.node_count - 1 -1 43 49 44 def _print(self, s):50 -1 print('#%s;' % s, end='\r\n')-1 45 self.output += f'#{s};\r\n' 51 46 52 47 def call(self, name, args, scope): 53 48 params, body, lexical_scope = scope.get_func(name) @@ -80,11 +75,11 @@ class Renderer: 80 75 return index, port 81 76 elif expr[0] == 'raw': 82 77 self._print(f'X obj 0 0 {expr[1]}')83 -1 index = scope.create_node()-1 78 index = self.create_node() 84 79 return index, 0 85 80 elif expr[0] in ['str', 'int', 'float']: 86 81 self._print(f'X msg 0 0 {expr[1]}')87 -1 index = scope.create_node()-1 82 index = self.create_node() 88 83 self._print('X connect %i %i %i %i' % ( 89 84 *scope.get_ref('!loadbang'), 90 85 index, 0 @@ -120,6 +115,9 @@ class Renderer: 120 115 121 116 def render(self, fh): 122 117 scope = Scope() -1 118 self.node_count = 0 -1 119 self.output = '' -1 120 123 121 ast = self.parser.parse_file(fh) 124 122 self._print('N canvas') 125 123 self.render_with_scope([ @@ -127,8 +125,10 @@ class Renderer: 127 125 ], scope) 128 126 self.render_with_scope(ast, scope) 129 127 -1 128 return self.output -1 129 130 130 131 131 if __name__ == '__main__': 132 132 renderer = Renderer() 133 133 with open(sys.argv[1]) as fh:134 -1 renderer.render(fh)-1 134 print(renderer.render(fh), end='')