Make functions for dealing with ISO-639-2 names private in favor of Locale class

This commit is contained in:
Martchus 2021-01-20 20:08:13 +01:00
parent 761e3ee44b
commit e5c259c4fa
2 changed files with 12 additions and 29 deletions

View File

@ -16,11 +16,19 @@ static const auto &languageMapping()
} }
/// \endcond /// \endcond
/*!
* \brief Returns whether an ISO-639-2 \a languageSpecification is not empty or undefined.
*/
inline static bool isLanguageDefined_ISO_639_2(const std::string &languageSpecification)
{
return !languageSpecification.empty() && languageSpecification != "und" && languageSpecification != "XXX";
}
/*! /*!
* \brief Returns the language name for the specified ISO-639-2 code (bibliographic, 639-2/B). * \brief Returns the language name for the specified ISO-639-2 code (bibliographic, 639-2/B).
* \remarks If \a isoCode is unknown an empty string is returned. * \remarks If \a isoCode is unknown an empty string is returned.
*/ */
const std::string &languageNameFromIso(const std::string &isoCode) static const std::string &languageName_ISO_639_2(const std::string &isoCode)
{ {
const auto &mapping = languageMapping(); const auto &mapping = languageMapping();
const auto i = mapping.find(isoCode); const auto i = mapping.find(isoCode);
@ -31,20 +39,6 @@ const std::string &languageNameFromIso(const std::string &isoCode)
return i->second; return i->second;
} }
/*!
* \brief Returns the language name for the specified ISO-639-2 code (bibliographic, 639-2/B).
* \remarks If \a isoCode is unknown the \a isoCode itself is returned.
*/
const std::string &languageNameFromIsoWithFallback(const std::string &isoCode)
{
const auto &mapping = languageMapping();
const auto i = mapping.find(isoCode);
if (i == mapping.cend()) {
return isoCode;
}
return i->second;
}
/*! /*!
* \brief Returns an empty LocaleDetail. * \brief Returns an empty LocaleDetail.
*/ */
@ -65,7 +59,7 @@ const LocaleDetail &LocaleDetail::getEmpty()
const LocaleDetail &Locale::abbreviatedName(LocaleFormat format) const const LocaleDetail &Locale::abbreviatedName(LocaleFormat format) const
{ {
for (const auto &detail : *this) { for (const auto &detail : *this) {
if (!detail.empty() && detail.format == format && isLanguageDefined(detail)) { if (!detail.empty() && detail.format == format && isLanguageDefined_ISO_639_2(detail)) {
return detail; return detail;
} }
} }
@ -99,7 +93,7 @@ const LocaleDetail &Locale::someAbbreviatedName(LocaleFormat preferredFormat) co
mostRelevantDetail = &detail; mostRelevantDetail = &detail;
} }
} }
if (!mostRelevantDetail || !isLanguageDefined(*mostRelevantDetail)) { if (!mostRelevantDetail || !isLanguageDefined_ISO_639_2(*mostRelevantDetail)) {
return LocaleDetail::getEmpty(); return LocaleDetail::getEmpty();
} }
return *mostRelevantDetail; return *mostRelevantDetail;
@ -114,7 +108,7 @@ const std::string &TagParser::Locale::fullName() const
{ {
for (const auto &detail : *this) { for (const auto &detail : *this) {
if (detail.format == LocaleFormat::ISO_639_2_B || detail.format == LocaleFormat::ISO_639_2_T) { if (detail.format == LocaleFormat::ISO_639_2_B || detail.format == LocaleFormat::ISO_639_2_T) {
return languageNameFromIso(detail); return languageName_ISO_639_2(detail);
} }
} }
return LocaleDetail::getEmpty(); return LocaleDetail::getEmpty();

View File

@ -11,17 +11,6 @@
namespace TagParser { namespace TagParser {
/*!
* \brief Returns whether an ISO-639-2 \a languageSpecification is not empty or undefined.
*/
inline bool isLanguageDefined(const std::string &languageSpecification)
{
return !languageSpecification.empty() && languageSpecification != "und" && languageSpecification != "XXX";
}
TAG_PARSER_EXPORT const std::string &languageNameFromIso(const std::string &isoCode);
TAG_PARSER_EXPORT const std::string &languageNameFromIsoWithFallback(const std::string &isoCode);
/// \brief The LocaleFormat enum class specifies the format used by a LocaleDetail. /// \brief The LocaleFormat enum class specifies the format used by a LocaleDetail.
enum class LocaleFormat : std::uint64_t { enum class LocaleFormat : std::uint64_t {
Unknown, /**< the format is unknown */ Unknown, /**< the format is unknown */