Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mapsme/omim.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIlya Zverev <zverik@textual.ru>2017-03-22 17:45:44 +0300
committerSergey Yershov <syershov@maps.me>2017-04-21 20:40:31 +0300
commit5891c76077a2ac24ab3d5c3ca196f04a2d4d8bca (patch)
tree1ec8c2cc7b0d9bd7e45418a9fe4a308680bab58e /indexer/drules_selector.cpp
parent1b49adb0ad2adb5442b88e0f11bd7f9b2f9d60c5 (diff)
[styles] Rating drules selector
Diffstat (limited to 'indexer/drules_selector.cpp')
-rw-r--r--indexer/drules_selector.cpp26
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