Skip to content

Commit c7eb0d0

Browse files
Update code
1 parent 5469baa commit c7eb0d0

1 file changed

Lines changed: 12 additions & 9 deletions

File tree

multilingualprogramming/codegen/ui_lowering.py

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -103,22 +103,21 @@ class UILoweringPass:
103103
def __init__(self) -> None:
104104
self._result = UILoweringResult()
105105
self._signal_names: set[str] = set()
106-
self._render_roots: list[str] = []
106+
self._has_render_root = False
107107
self._canvas_names: list[str] = []
108108
self._functions: list[str] = []
109109
self._ui_function_names: set[str] = set()
110110
self._render_function = ""
111-
self._preamble = ""
112111

113112
def lower(self, program: IRProgram) -> UILoweringResult:
114113
"""Lower an IRProgram to UI output."""
115-
self._emit_preamble()
114+
preamble = self._emit_preamble()
116115
for node in program.body:
117116
self._lower_node(node)
118117

119118
self._wire_render_updates()
120119

121-
js_parts = [self._preamble]
120+
js_parts = [preamble]
122121
js_parts.extend(self._result.js_signals)
123122
js_parts.extend(self._functions)
124123
js_parts.extend(self._result.js_handlers)
@@ -156,8 +155,8 @@ def _lower_node(self, node: IRNode) -> None:
156155
for child in node.body:
157156
self._lower_node(child)
158157

159-
def _emit_preamble(self) -> None:
160-
self._preamble = """// Generated by Multilingual UI lowering
158+
def _emit_preamble(self) -> str:
159+
return """// Generated by Multilingual UI lowering
161160
class ReactiveSignal {
162161
constructor(value) {
163162
this._value = value;
@@ -300,7 +299,7 @@ def _lower_function(self, node: IRFunction) -> None:
300299
self._functions.append(f"{keyword} {node.name}({params}) {{\n{body}\n}}")
301300

302301
def _lower_render_block(self, node: IRRenderBlock) -> None:
303-
self._render_roots.append("__ml_root")
302+
self._has_render_root = True
304303
lines = [
305304
"function __ml_render() {",
306305
" const __root = document.getElementById('__ml_root');",
@@ -327,8 +326,12 @@ def _emit_html(self) -> str:
327326
f' <div id="{name}" class="ml-canvas"></div>'
328327
for name in self._canvas_names
329328
)
330-
root_html = ' <div id="__ml_root"></div>' if self._render_roots else ""
331-
title = "Memory Game - Multilingual" if self._render_roots else "Multilingual UI Preview"
329+
root_html = ' <div id="__ml_root"></div>' if self._has_render_root else ""
330+
title = (
331+
"Memory Game - Multilingual"
332+
if self._has_render_root
333+
else "Multilingual UI Preview"
334+
)
332335
return f"""<!DOCTYPE html>
333336
<html lang="en">
334337
<head>

0 commit comments

Comments
 (0)