mirror of
https://codeberg.org/comaps/comaps
synced 2025-12-19 13:03:36 +00:00
[generator] Add support of Panoramax tag
Signed-off-by: Jean-Baptiste Charron <jeanbaptiste.charron@outlook.fr> Co-authored by: Harry Bond <me@hbond.xyz>
This commit is contained in:
committed by
Konstantin Pastbin
parent
495167c11f
commit
6a10cffe51
@@ -275,6 +275,8 @@
|
||||
<li>Code2000 Font<br>
|
||||
© 1998–2003 James Kass; Shareware</li>
|
||||
</ul>
|
||||
<li><a href="https://upload.wikimedia.org/wikipedia/commons/a/a9/Panoramax.svg">Panoramax</a><br>
|
||||
© 2023 Adrien Pavie; <a href="license" class="license">CC BY 4.0 License</a></li>
|
||||
|
||||
<p id="icons">We also use these icons on the map:</p>
|
||||
|
||||
|
||||
@@ -270,6 +270,7 @@ public:
|
||||
string const opening_hours(meta.Get(feature::Metadata::FMD_OPEN_HOURS));
|
||||
string const wikipedia(meta.Get(feature::Metadata::FMD_WIKIPEDIA));
|
||||
string const wikimedia_commons(meta.Get(feature::Metadata::FMD_WIKIMEDIA_COMMONS));
|
||||
string const panoramax(meta.Get(feature::Metadata::FMD_PANORAMAX));
|
||||
string const floor(meta.Get(feature::Metadata::FMD_LEVEL));
|
||||
string const fee = category.ends_with("-fee") ? "yes" : "";
|
||||
string const atm = HasAtm(f) ? "yes" : "";
|
||||
@@ -278,7 +279,7 @@ public:
|
||||
osmId, uid, lat, lon, mwmName, category, name, std::string(city),
|
||||
addrStreet, addrHouse, phone, website, stars, std::string(metaOperator), internet,
|
||||
denomination, wheelchair, opening_hours, wikipedia, floor, fee, atm, contact_facebook,
|
||||
contact_instagram, contact_twitter, contact_vk, contact_line, contact_fediverse, contact_bluesky, wikimedia_commons};
|
||||
contact_instagram, contact_twitter, contact_vk, contact_line, contact_fediverse, contact_bluesky, wikimedia_commons, panoramax};
|
||||
|
||||
AppendNames(f, columns);
|
||||
PrintAsCSV(columns, ';', cout);
|
||||
@@ -292,7 +293,7 @@ void PrintHeader()
|
||||
"phone", "website", "cuisines", "stars", "operator",
|
||||
"internet", "denomination", "wheelchair", "opening_hours", "wikipedia",
|
||||
"floor", "fee", "atm", "contact_facebook", "contact_instagram",
|
||||
"contact_twitter", "contact_vk", "contact_line", "contact_fediverse", "contact_bluesky", "wikimedia_commons"};
|
||||
"contact_twitter", "contact_vk", "contact_line", "contact_fediverse", "contact_bluesky", "wikimedia_commons", "panoramax"};
|
||||
// Append all supported name languages in order.
|
||||
for (uint8_t idx = 1; idx < kLangCount; idx++)
|
||||
columns.push_back("name_" + string(StringUtf8Multilang::GetLangByCode(idx)));
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
#include <cmath>
|
||||
#include <cstdlib>
|
||||
#include <optional>
|
||||
#include <regex>
|
||||
#include <unordered_map>
|
||||
#include <unordered_set>
|
||||
|
||||
@@ -309,6 +310,22 @@ std::string MetadataTagProcessorImpl::ValidateAndFormat_wikimedia_commons(std::s
|
||||
return {};
|
||||
}
|
||||
|
||||
std::string MetadataTagProcessorImpl::ValidateAndFormat_panoramax(std::string v)
|
||||
{
|
||||
static auto const s_panoramaxRegex = std::regex(R"(^([a-z0-9]{8}(-[a-z0-9]{4}){3}-[a-z0-9]{12})$)");
|
||||
|
||||
if (std::regex_match(v, s_panoramaxRegex))
|
||||
return v;
|
||||
url::Url const parsedUrl = url::Url::FromString(v);
|
||||
if (const std::string* paramValue = parsedUrl.GetParamValue("pic"))
|
||||
{
|
||||
if (std::regex_match(*paramValue, s_panoramaxRegex))
|
||||
return v;
|
||||
}
|
||||
LOG(LDEBUG, ("Invalid Panoramax tag value:", v));
|
||||
return {};
|
||||
}
|
||||
|
||||
std::string MetadataTagProcessorImpl::ValidateAndFormat_airport_iata(std::string const & v) const
|
||||
{
|
||||
if (!ftypes::IsAirportChecker::Instance()(m_params.m_types))
|
||||
@@ -548,6 +565,7 @@ void MetadataTagProcessor::operator()(std::string const & k, std::string const &
|
||||
case Metadata::FMD_POSTCODE: valid = ValidateAndFormat_postcode(v); break;
|
||||
case Metadata::FMD_WIKIPEDIA: valid = ValidateAndFormat_wikipedia(v); break;
|
||||
case Metadata::FMD_WIKIMEDIA_COMMONS: valid = ValidateAndFormat_wikimedia_commons(v); break;
|
||||
case Metadata::FMD_PANORAMAX: valid = ValidateAndFormat_panoramax(v); break;
|
||||
case Metadata::FMD_FLATS: valid = ValidateAndFormat_flats(v); break;
|
||||
case Metadata::FMD_MIN_HEIGHT: // The same validator as for height.
|
||||
case Metadata::FMD_HEIGHT: valid = ValidateAndFormat_height(v); break;
|
||||
|
||||
@@ -33,6 +33,7 @@ struct MetadataTagProcessorImpl
|
||||
static std::string ValidateAndFormat_denomination(std::string const & v) ;
|
||||
static std::string ValidateAndFormat_wikipedia(std::string v) ;
|
||||
static std::string ValidateAndFormat_wikimedia_commons(std::string v) ;
|
||||
static std::string ValidateAndFormat_panoramax(std::string v) ;
|
||||
std::string ValidateAndFormat_airport_iata(std::string const & v) const;
|
||||
static std::string ValidateAndFormat_brand(std::string const & v);
|
||||
std::string ValidateAndFormat_duration(std::string const & v) const;
|
||||
|
||||
@@ -124,6 +124,8 @@ bool Metadata::TypeFromString(string_view k, Metadata::EType & outType)
|
||||
outType = Metadata::FMD_WIKIPEDIA;
|
||||
else if (k == "wikimedia_commons")
|
||||
outType = Metadata::FMD_WIKIMEDIA_COMMONS;
|
||||
else if (k == "panoramax")
|
||||
outType = Metadata::FMD_PANORAMAX;
|
||||
else if (k == "addr:flats")
|
||||
outType = Metadata::FMD_FLATS;
|
||||
else if (k == "height")
|
||||
@@ -275,6 +277,7 @@ string ToString(Metadata::EType type)
|
||||
case Metadata::FMD_JUNCTION_REF: return "junction:ref";
|
||||
case Metadata::FMD_BUILDING_MIN_LEVEL: return "building:min_level";
|
||||
case Metadata::FMD_WIKIMEDIA_COMMONS: return "wikimedia_commons";
|
||||
case Metadata::FMD_PANORAMAX: return "panoramax";
|
||||
case Metadata::FMD_CAPACITY: return "capacity";
|
||||
case Metadata::FMD_WHEELCHAIR: return "wheelchair";
|
||||
case Metadata::FMD_LOCAL_REF: return "local_ref";
|
||||
|
||||
@@ -157,6 +157,7 @@ public:
|
||||
FMD_NETWORK = 49,
|
||||
FMD_CONTACT_FEDIVERSE = 50,
|
||||
FMD_CONTACT_BLUESKY = 51,
|
||||
FMD_PANORAMAX = 52,
|
||||
FMD_COUNT
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user