#ifndef PEGHIGHLIGHTERRESULT_H #define PEGHIGHLIGHTERRESULT_H #include "vconstants.h" #include "pegparser.h" class PegMarkdownHighlighter; class QTextDocument; class PegHighlighterResult { public: PegHighlighterResult(); PegHighlighterResult(const PegMarkdownHighlighter *p_peg, const QSharedPointer &p_result); bool matched(TimeStamp p_timeStamp) const; TimeStamp m_timeStamp; int m_numOfBlocks; QVector> m_blocksHighlights; // Use another member to store the codeblocks highlights, because the highlight // sequence is blockHighlights, regular-expression-based highlihgts, and then // codeBlockHighlights. // Support fenced code block only. QVector > m_codeBlocksHighlights; // All image link regions. QVector m_imageRegions; // All header regions. // Sorted by start position. QVector m_headerRegions; // All fenced code blocks. QVector m_codeBlocks; // Indexed by block number. QHash m_codeBlocksState; int m_numOfCodeBlockHighlightsToRecv; // All MathJax blocks. QVector m_mathjaxBlocks; private: // Parse highlight elements for all the blocks from parse results. void parseBlocksHighlights(const PegMarkdownHighlighter *p_peg, const QSharedPointer &p_result); // Parse highlight elements for blocks from one parse result. void parseBlocksHighlightOne(const QTextDocument *p_doc, unsigned long p_pos, unsigned long p_end, int p_styleIndex); // Parse fenced code blocks from parse results. void parseFencedCodeBlocks(const PegMarkdownHighlighter *p_peg, const QSharedPointer &p_result); // Parse fenced code blocks from parse results. void parseMathjaxBlocks(const PegMarkdownHighlighter *p_peg, const QSharedPointer &p_result); void parseBlocksElementRegionOne(QHash> &p_regs, const QTextDocument *p_doc, unsigned long p_pos, unsigned long p_end); QRegExp m_codeBlockStartExp; QRegExp m_codeBlockEndExp; }; inline bool PegHighlighterResult::matched(TimeStamp p_timeStamp) const { return m_timeStamp == p_timeStamp; } #endif // PEGHIGHLIGHTERRESULT_H