Skip to content

Commit f15c218

Browse files
committed
Fix c++11 build
1 parent e3f5928 commit f15c218

File tree

1 file changed

+19
-10
lines changed

1 file changed

+19
-10
lines changed

src/html2md.cpp

Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -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

188197
Converter *Converter::appendToMd(char ch) {

0 commit comments

Comments
 (0)