diff options
author | Ilya Zverev <zverik@textual.ru> | 2017-03-22 17:45:44 +0300 |
---|---|---|
committer | Sergey Yershov <syershov@maps.me> | 2017-04-21 20:40:31 +0300 |
commit | 5891c76077a2ac24ab3d5c3ca196f04a2d4d8bca (patch) | |
tree | 1ec8c2cc7b0d9bd7e45418a9fe4a308680bab58e /indexer/drules_selector.cpp | |
parent | 1b49adb0ad2adb5442b88e0f11bd7f9b2f9d60c5 (diff) |
[styles] Rating drules selector
Diffstat (limited to 'indexer/drules_selector.cpp')
-rw-r--r-- | indexer/drules_selector.cpp | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/indexer/drules_selector.cpp b/indexer/drules_selector.cpp index 99c0e1f3c9..be326a45c9 100644 --- a/indexer/drules_selector.cpp +++ b/indexer/drules_selector.cpp @@ -123,6 +123,21 @@ bool GetBoundingBoxArea(FeatureType const & ft, double & sqM) return true; } +// Feature tag value evaluator for tag 'rating' +bool GetRating(FeatureType const & ft, double & rating) +{ + ftypes::IsHotelChecker hotelChecker; + if (!hotelChecker(ft)) + return false; + + double constexpr kDefaultRating = 0.0; + + string ratingStr = ft.GetMetadata().Get(feature::Metadata::FMD_RATING); + if (ratingStr.empty() || !strings::to_double(ratingStr, rating)) + rating = kDefaultRating; + return true; +} + // Add new tag value evaluator here } // namespace @@ -163,6 +178,17 @@ unique_ptr<ISelector> ParseSelector(string const & str) } return make_unique<Selector<double>>(&GetBoundingBoxArea, e.m_operator, value); } + else if (e.m_tag == "rating") + { + double value = 0; + if (!e.m_value.empty() && (!strings::to_double(e.m_value, value) || value < 0)) + { + // bad string format + LOG(LDEBUG, ("Invalid selector:", str)); + return unique_ptr<ISelector>(); + } + return make_unique<Selector<double>>(&GetRating, e.m_operator, value); + } // Add new tag here |