in src/models/struxgpt_v2.py [0:0]
def dump_mindmap(self, obj: "StructItem", prefix='', is_root=True, highlights=[]):
lines = []
# 定义各种特殊字符,表示树的枝干连接
branch = '├─ '
last_branch = '└─ '
pipe = '│'
empty = ' '
# 处理根节点
if is_root:
lines.append(prefix + remove_punc(obj.scope))
# 获取下一层的aspect列表,如果不存在,则为空列表
for i, aspect in enumerate(obj.aspects):
# 选择合适的分支符号
is_last = (i == len(obj.aspects) - 1)
if is_last:
new_prefix = prefix + last_branch
next_prefix = prefix + empty + ' '
else:
new_prefix = prefix + branch
next_prefix = prefix + pipe + ' '
# 将当前aspect的内容加到文本中
aspect_name = deepcopy(remove_punc(aspect.name))
if aspect_name in highlights:
aspect_name = f'**{aspect_name}**'
lines.append(new_prefix + aspect_name)
# 如果存在子层,递归调用函数处理子层
if len(aspect.subaspects):
lines.extend(
self.dump_mindmap(aspect.upgrad_to_struct(), next_prefix,
is_root=False, highlights=highlights)
)
# 处理根节点
if is_root:
mindmap = '\n'.join(lines)
# for flag in highlights:
# assert f'**{flag}**' in mindmap, f'\n{mindmap}\n\n{flag}'
return mindmap
else:
return lines