@@ -160,29 +160,38 @@ void Converter::CleanUpMarkdown() {
160160 // Replace HTML symbols during the initial pass
161161 for (size_t i = 0 ; i < md_.size ();) {
162162 bool replaced = false ;
163- for (const auto &[symbol, replacement] : htmlSymbolConversions_) {
163+
164+ // C++11 compatible iteration over htmlSymbolConversions_
165+ for (const auto &symbol_replacement : htmlSymbolConversions_) {
166+ const std::string &symbol = symbol_replacement.first ;
167+ const std::string &replacement = symbol_replacement.second ;
168+
164169 if (md_.compare (i, symbol.size (), symbol) == 0 ) {
165- buffer += replacement;
170+ buffer. append ( replacement) ;
166171 i += symbol.size ();
167172 replaced = true ;
168173 break ;
169174 }
170175 }
176+
171177 if (!replaced) {
172- buffer += md_[i++];
178+ buffer. push_back ( md_[i++]) ;
173179 }
174180 }
175181
176- md_ = std::move (buffer);
182+ // Use swap instead of move assignment for better pre-C++11 compatibility
183+ md_.swap (buffer);
177184 TidyAllLines (&md_);
178185
179- ReplaceAll (&md_, " , " , " , " );
186+ // Optimized replacement sequence
187+ const char *replacements[][2 ] = {
188+ {" , " , " , " }, {" \n .\n " , " .\n " }, {" \n ↵\n " , " ↵\n " }, {" \n *\n " , " \n " },
189+ {" \n . " , " .\n " }, {" \t\t " , " \t\t " },
190+ };
180191
181- ReplaceAll (&md_, " \n .\n " , " .\n " );
182- ReplaceAll (&md_, " \n ↵\n " , " ↵\n " );
183- ReplaceAll (&md_, " \n *\n " , " \n " );
184- ReplaceAll (&md_, " \n . " , " .\n " );
185- ReplaceAll (&md_, " \t\t " , " \t\t " );
192+ for (const auto &replacement : replacements) {
193+ ReplaceAll (&md_, replacement[0 ], replacement[1 ]);
194+ }
186195}
187196
188197Converter *Converter::appendToMd (char ch) {
0 commit comments