def dump_mindmap()

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