| 183 | |
| 184 | template <class StringViewLike> |
| 185 | void SaveStringsArray(Writer & writer, std::vector<StringViewLike> const & stringsArray, std::string const & tagName, |
| 186 | std::string_view const & indent) |
| 187 | { |
| 188 | if (stringsArray.empty()) |
| 189 | return; |
| 190 | |
| 191 | writer << indent << "<mwm:" << tagName << ">\n"; |
| 192 | for (auto const & s : stringsArray) |
| 193 | { |
| 194 | writer << indent << kIndent2 << "<mwm:value>"; |
| 195 | // Constants from our code do not need any additional checks or escaping. |
| 196 | if constexpr (std::is_same_v<StringViewLike, std::string_view>) |
| 197 | { |
| 198 | ASSERT_EQUAL(s.find_first_of("<&"), std::string_view::npos, ("Use std::string overload for", s)); |
| 199 | writer << s; |
| 200 | } |
| 201 | else |
| 202 | SaveStringWithCDATA(writer, s); |
| 203 | writer << "</mwm:value>\n"; |
| 204 | } |
| 205 | writer << indent << "</mwm:" << tagName << ">\n"; |
| 206 | } |
| 207 | |
| 208 | void SaveStringsMap(Writer & writer, std::map<std::string, std::string> const & stringsMap, std::string const & tagName, |
| 209 | std::string_view const & indent) |
no test coverage detected