From 084db2c784708ac62ce2d609296c14712964e36a Mon Sep 17 00:00:00 2001 From: Taekyung Heo <7621438+TaekyungHeo@users.noreply.github.com> Date: Fri, 12 Jan 2024 20:50:03 -0500 Subject: [PATCH] Escape labels in et_visualizer --- et_visualizer/et_visualizer.py | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/et_visualizer/et_visualizer.py b/et_visualizer/et_visualizer.py index 58c120ea..4216c1fc 100644 --- a/et_visualizer/et_visualizer.py +++ b/et_visualizer/et_visualizer.py @@ -3,6 +3,7 @@ import argparse import graphviz import networkx as nx +import re from chakra.third_party.utils.protolib import ( openFileRd as open_file_rd, @@ -14,6 +15,22 @@ ) +def escape_label(label: str) -> str: + """ + Escapes special characters in labels for graph rendering. + + Args: + label (str): The original label string. + + Returns: + str: The escaped label string. + """ + # Define special characters to escape + special_chars = "{}()<>\[\]|&-" + # Escape special characters + return re.sub(f"([{special_chars}])", r"\\\1", label) + + def main() -> None: parser = argparse.ArgumentParser( description="Execution Trace Visualizer" @@ -43,8 +60,9 @@ def main() -> None: f = graphviz.Digraph() decode_message(et, gm) while decode_message(et, node): + escaped_label = escape_label(node.name) f.node(name=f"{node.id}", - label=f"{node.name}", + label=escaped_label, id=str(node.id), shape="record")