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:
authorAlex Zolotarev <alex@maps.me>2016-04-06 19:35:27 +0300
committerAlex Zolotarev <alex@maps.me>2016-04-07 19:56:52 +0300
commit9e323f16eb3a47902a702d4bc2e2fd55e42a8278 (patch)
tree659168cd0838d6534551d6f0afa364bf13e56ae2 /indexer/editable_map_object.cpp
parent7802303f12acec707b6ab330c987b9b75a2be353 (diff)
Basic validation of house numbers.
Diffstat (limited to 'indexer/editable_map_object.cpp')
-rw-r--r--indexer/editable_map_object.cpp30
1 files changed, 28 insertions, 2 deletions
diff --git a/indexer/editable_map_object.cpp b/indexer/editable_map_object.cpp
index cd689ca92b..c12443590f 100644
--- a/indexer/editable_map_object.cpp
+++ b/indexer/editable_map_object.cpp
@@ -4,6 +4,9 @@
#include "indexer/ftypes_matcher.hpp"
#include "base/macros.hpp"
+#include "base/string_utils.hpp"
+
+#include "std/cctype.hpp"
namespace osm
{
@@ -94,12 +97,35 @@ void EditableMapObject::SetNearbyStreets(vector<string> && streets)
{
m_nearbyStreets = move(streets);
}
+
+// static
+bool EditableMapObject::ValidateHouseNumber(string const & houseNumber)
+{
+ if (houseNumber.empty())
+ return true;
+
+ strings::UniString us = strings::MakeUniString(houseNumber);
+ // TODO: Improve this basic limit - it was choosen by @Zverik.
+ auto constexpr kMaxHouseNumberLength = 15;
+ if (us.size() > kMaxHouseNumberLength)
+ return false;
+
+ // TODO: Should we allow arabic numbers like U+0661 ١ Arabic-Indic Digit One?
+ strings::NormalizeDigits(us);
+ for (strings::UniChar const c : us)
+ {
+ // Valid house numbers contain at least one number.
+ if (c >= '0' && c <= '9')
+ return true;
+ }
+ return false;
+}
+
void EditableMapObject::SetHouseNumber(string const & houseNumber)
{
- // TODO(AlexZ): Check house number for validity with feature::IsHouseNumber ?
- // TODO(AlexZ): Store edited house number as house name if feature::IsHouseNumber() returned false.
m_houseNumber = houseNumber;
}
+
void EditableMapObject::SetPostcode(string const & postcode)
{
m_metadata.Set(feature::Metadata::FMD_POSTCODE, postcode);