Files
slic/json_to_tree.py
T
tligui_y c8d9c7e18b
Run Pytest with HTML and XML Test Reports / tests (push) Successful in 23s
Update json_to_tree.py
2025-07-16 13:23:24 +02:00

48 lines
1.5 KiB
Python

from rich.console import Console
from rich.tree import Tree
import json
import sys
def style_value(value):
if isinstance(value, str):
return f"[green]\"{value}\"[/]"
elif isinstance(value, (int, float)):
return f"[yellow]{value}[/]"
elif value is None:
return "[red]null[/]"
elif isinstance(value, bool):
return f"[red]{value}[/]"
else:
return f"[cyan]{value}[/]"
def build_tree(data, tree):
if isinstance(data, dict):
for key, value in data.items():
if isinstance(value, (dict, list)):
branch = tree.add(f"[bold magenta]{key}[/]")
build_tree(value, branch)
else:
tree.add(f"[bold magenta]{key}[/]: {style_value(value)}")
elif isinstance(data, list):
for value in data:
if isinstance(value, (dict, list)):
branch = tree.add(f"[bold magenta]-[/]")
build_tree(value, branch)
else:
tree.add(style_value(value))
def main():
file_path = sys.argv[1]
with open(file_path, 'r') as f:
data = json.load(f)
console = Console(record=True, force_terminal=True, color_system="truecolor")
root = Tree(f"[bold white on blue]📁 {file_path}[/]")
build_tree(data, root)
console.print(root)
with open("ci-reports/markdown/json-tree-view.md", "w") as f:
f.write(console.export_text(clear=False))
if __name__ == "__main__":
main()