3
#include "baldr/streetname.h"
4
#include "baldr/streetname_us.h"
6
#include <boost/algorithm/string/predicate.hpp>
11
const std::vector<std::string> StreetNameUs::pre_dirs_ { "North ", "East ",
12
"South ", "West ", "Northeast ", "Southeast ", "Southwest ", "Northwest " };
13
const std::vector<std::string> StreetNameUs::post_dirs_ { " North", " East",
14
" South", " West", " Northeast", " Southeast", " Southwest", " Northwest" };
15
const std::vector<std::string> StreetNameUs::post_cardinal_dirs_ { " North",
16
" East", " South", " West" };
18
StreetNameUs::StreetNameUs(const std::string& value) : StreetName(value) {
21
std::string StreetNameUs::GetPreDir() const {
22
for (const auto& pre_dir : StreetNameUs::pre_dirs_) {
23
if (StartsWith(pre_dir))
29
std::string StreetNameUs::GetPostDir() const {
30
for (const auto& post_dir : StreetNameUs::post_dirs_) {
31
if (EndsWith(post_dir))
37
std::string StreetNameUs::GetPostCardinalDir() const {
38
for (const auto& post_cardinal_dir : StreetNameUs::post_cardinal_dirs_) {
39
if (EndsWith(post_cardinal_dir))
40
return post_cardinal_dir;
45
std::string StreetNameUs::GetBaseName() const {
46
std::string pre_dir = GetPreDir();
47
std::string post_dir = GetPostDir();
49
return value_.substr(pre_dir.size(),
50
(value_.size() - pre_dir.size() - post_dir.size()));
53
bool StreetNameUs::HasSameBaseName(const StreetName& rhs) const {
54
return (GetBaseName() == rhs.GetBaseName());