| 225 | std::vector<CategoryData> const * compilationData); |
| 226 | |
| 227 | void SaveCategoryExtendedData(Writer & writer, CategoryData const & categoryData, std::string const & extendedServerId, |
| 228 | std::vector<CategoryData> const * compilationData) |
| 229 | { |
| 230 | if (compilationData) |
| 231 | { |
| 232 | writer << kIndent2 << kExtendedDataHeader; |
| 233 | } |
| 234 | else |
| 235 | { |
| 236 | std::string compilationAttributes; |
| 237 | if (categoryData.m_compilationId != kInvalidCompilationId) |
| 238 | compilationAttributes += " id=\"" + strings::to_string(categoryData.m_compilationId) + "\""; |
| 239 | compilationAttributes += " type=\"" + DebugPrint(categoryData.m_type) + "\""; |
| 240 | writer << kIndent4 << "<" << kCompilation << compilationAttributes << ">\n"; |
| 241 | } |
| 242 | |
| 243 | auto const & indent = compilationData ? kIndent4 : kIndent6; |
| 244 | |
| 245 | if (!extendedServerId.empty() && compilationData) |
| 246 | writer << indent << "<mwm:serverId>" << extendedServerId << "</mwm:serverId>\n"; |
| 247 | |
| 248 | SaveLocalizableString(writer, categoryData.m_name, "name", indent); |
| 249 | SaveLocalizableString(writer, categoryData.m_annotation, "annotation", indent); |
| 250 | SaveLocalizableString(writer, categoryData.m_description, "description", indent); |
| 251 | |
| 252 | if (!compilationData) |
| 253 | writer << indent << "<mwm:visibility>" << (categoryData.m_visible ? "1" : "0") << "</mwm:visibility>\n"; |
| 254 | |
| 255 | if (!categoryData.m_imageUrl.empty()) |
| 256 | writer << indent << "<mwm:imageUrl>" << categoryData.m_imageUrl << "</mwm:imageUrl>\n"; |
| 257 | |
| 258 | if (!categoryData.m_authorId.empty() || !categoryData.m_authorName.empty()) |
| 259 | { |
| 260 | writer << indent << "<mwm:author id=\"" << categoryData.m_authorId << "\">"; |
| 261 | SaveStringWithCDATA(writer, categoryData.m_authorName); |
| 262 | writer << "</mwm:author>\n"; |
| 263 | } |
| 264 | |
| 265 | if (categoryData.m_lastModified != Timestamp()) |
| 266 | { |
| 267 | writer << indent << "<mwm:lastModified>" << TimestampToString(categoryData.m_lastModified) |
| 268 | << "</mwm:lastModified>\n"; |
| 269 | } |
| 270 | |
| 271 | double constexpr kEps = 1e-5; |
| 272 | if (fabs(categoryData.m_rating) > kEps) |
| 273 | writer << indent << "<mwm:rating>" << strings::to_string(categoryData.m_rating) << "</mwm:rating>\n"; |
| 274 | |
| 275 | if (categoryData.m_reviewsNumber > 0) |
| 276 | { |
| 277 | writer << indent << "<mwm:reviewsNumber>" << strings::to_string(categoryData.m_reviewsNumber) |
| 278 | << "</mwm:reviewsNumber>\n"; |
| 279 | } |
| 280 | |
| 281 | writer << indent << "<mwm:accessRules>" << DebugPrint(categoryData.m_accessRules) << "</mwm:accessRules>\n"; |
| 282 | |
| 283 | SaveStringsArray(writer, categoryData.m_tags, "tags", indent); |
| 284 |
no test coverage detected