#ifndef OUTLINEPARSER_H
#define OUTLINEPARSER_H

#include <QObject>
#include <QString>
#include <cmark.h>

class OutlineParser : public QObject
{
    Q_OBJECT
public:
    explicit OutlineParser(QObject *parent = nullptr);

    Q_INVOKABLE void parse(const QString& markdownText);

signals:
    // 新增顶层节点(一级、二级标题)
    void topLevelNodeParsed(const QString& jsonData);
    // 更新节点概述
    void nodeOverviewUpdated(int nodeId, const QString& overview);
    // 新增子节点(三级、四级标题)
    void childNodeParsed(int parentNodeId, const QString& jsonData);

private:
    // 解析Markdown
    void parseNodes(cmark_node* node);
    // 提取概述文本
    QString extractText(cmark_node* node);

    int m_nextId = 0;
    int m_currentTopLevelNodeId = -1;
    bool m_isLookingForOverview = false;
};

#endif // OUTLINEPARSER_H
