diff --git a/search/intermediate_result.cpp b/search/intermediate_result.cpp index 27907b3c98..8872258212 100644 --- a/search/intermediate_result.cpp +++ b/search/intermediate_result.cpp @@ -301,23 +301,24 @@ void FillDetails(FeatureType & ft, Result::Details & details) auto const roadShield = strings::JoinStrings(roadShields, feature::kFieldsSeparator); auto const fee = feature::GetLocalizedFeeType(typesHolder); - + std::string description; + + auto const append = [&description](std::string_view sv) + { + if (sv.empty()) + return; + if (!description.empty()) + description += feature::kFieldsSeparator; + description += sv; + }; - if (!stars.empty()) - description.append(feature::kFieldsSeparator).append(stars); - if (!airportIata.empty()) - description.append(feature::kFieldsSeparator).append(airportIata); - if (!roadShield.empty()) - description.append(feature::kFieldsSeparator).append(roadShield); - if (!brand.empty()) - description.append(feature::kFieldsSeparator).append(brand); - if (!cuisine.empty()) - description.append(feature::kFieldsSeparator).append(cuisine); - if (feature::HasToilets(typesHolder)) - description.append(feature::kFieldsSeparator).append(osm::MapObject::kToiletsSymbol); - if (!fee.empty()) - description.append(feature::kFieldsSeparator).append(fee); + append(stars); + append(airportIata); + append(roadShield); + append(brand); + append(cuisine); + append(fee); details.m_description = std::move(description); diff --git a/search/result.cpp b/search/result.cpp index 2629924a2d..6c47430064 100644 --- a/search/result.cpp +++ b/search/result.cpp @@ -4,6 +4,7 @@ #include "search/geometry_utils.hpp" #include "indexer/classificator.hpp" +#include "indexer/feature_utils.hpp" #include "platform/localization.hpp" @@ -75,7 +76,21 @@ std::string Result::GetLocalizedFeatureType() const std::string Result::GetFeatureDescription() const { ASSERT_EQUAL(m_resultType, Type::Feature, ()); - return GetLocalizedFeatureType() + GetDescription(); + std::string featureDescription; + + auto const append = [&featureDescription](std::string_view sv) + { + if (!featureDescription.empty()) + featureDescription += feature::kFieldsSeparator; + featureDescription += sv; + }; + + append(GetLocalizedFeatureType()); + + if (!GetDescription().empty()) + append(GetDescription()); + + return featureDescription; } m2::PointD Result::GetFeatureCenter() const