90 void feedChar(
char c);
93 void flushInlineContent();
95 void flushInlineContent(
bool force);
98 void classifyFirstChar(
char c);
101 void handleHeadingHashes(
char c);
102 void handleHeadingChar(
char c);
103 void handleCodeFenceOpen(
char c);
104 void handleCodeBlockChar(
char c);
105 void handleBlockquoteChar(
char c);
106 void handleListMarker(
char c);
107 void handleParagraphChar(
char c);
108 void handleTableChar(
char c);
111 void openBlock(EBlockType type,
int level = 0,
bool ordered =
false);
113 void closeToType(EBlockType type);
114 void closeAllBlocks();
115 bool hasBlock(EBlockType type)
const;
118 void ensureParagraph();
120 void closeParagraph();
121 void ensureListBlock(
bool ordered,
int indent = 0);
124 void ensureDocStarted();
131 std::unique_ptr<MarkdownTableParser> tableSM_;
133 EState state_ = EState::eLineStart;
134 std::vector<BlockFrame> blockStack_;
137 std::string classBuf_;
139 std::string contentBuf_;
141 std::string codeLineBuf_;
144 int headingLevel_ = 0;
147 char codeFenceChar_ = 0;
148 int codeFenceCount_ = 0;
149 std::string codeFenceLang_;
152 bool inList_ =
false;
153 bool listOrdered_ =
false;
154 int currentLineIndent_ = 0;
155 bool listItemAfterNL_ =
false;
156 bool lineFresh_ =
true;
159 int currentListIndent()
const;
161 void closePendingListItem();
164 bool paraAfterNL_ =
false;
165 bool paraHadContent_ =
false;
168 bool docStarted_ =
false;