summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2021-03-20 10:51:34 +0100
committerCarl Hetherington <cth@carlh.net>2021-03-20 10:51:34 +0100
commitb7c316ba78f7ca634008baa3ad7d8c48403a7151 (patch)
tree76eaa235f4e6d1009558b1784116758773a3fb4d /src
parent9591b7486b0d56b7bc938f18a93e6d3a373e9d40 (diff)
Add access to DCNC list.
Diffstat (limited to 'src')
-rw-r--r--src/language_tag.cc28
-rw-r--r--src/language_tag.h3
2 files changed, 24 insertions, 7 deletions
diff --git a/src/language_tag.cc b/src/language_tag.cc
index c2e81869..6c7e6da9 100644
--- a/src/language_tag.cc
+++ b/src/language_tag.cc
@@ -61,6 +61,8 @@ static vector<LanguageTag::SubtagData> region_list;
static vector<LanguageTag::SubtagData> script_list;
static vector<LanguageTag::SubtagData> extlang_list;
+static vector<pair<string, string>> dcnc_list;
+
static
optional<LanguageTag::SubtagData>
@@ -434,7 +436,7 @@ LanguageTag::get_subtag_description (LanguageTag::SubtagType type, string subtag
void
-load_language_tag_list (boost::filesystem::path tags_directory, string name, vector<LanguageTag::SubtagData>& list)
+load_language_tag_list (boost::filesystem::path tags_directory, string name, std::function<void (std::string, std::string)> add)
{
auto f = fopen_boost (tags_directory / name, "r");
if (!f) {
@@ -457,7 +459,7 @@ load_language_tag_list (boost::filesystem::path tags_directory, string name, vec
}
string b = buffer;
trim (b);
- list.push_back (LanguageTag::SubtagData(a, b));
+ add (a, b);
++i;
}
@@ -468,11 +470,23 @@ load_language_tag_list (boost::filesystem::path tags_directory, string name, vec
void
dcp::load_language_tag_lists (boost::filesystem::path tags_directory)
{
- load_language_tag_list (tags_directory, "language", language_list);
- load_language_tag_list (tags_directory, "variant", variant_list);
- load_language_tag_list (tags_directory, "region", region_list);
- load_language_tag_list (tags_directory, "script", script_list);
- load_language_tag_list (tags_directory, "extlang", extlang_list);
+ auto add_subtag = [](vector<LanguageTag::SubtagData>& list, string a, string b) {
+ list.push_back (LanguageTag::SubtagData(a, b));
+ };
+
+ load_language_tag_list (tags_directory, "language", [&add_subtag](string a, string b) { add_subtag(language_list, a, b); });
+ load_language_tag_list (tags_directory, "variant", [&add_subtag](string a, string b) { add_subtag(variant_list, a, b); });
+ load_language_tag_list (tags_directory, "region", [&add_subtag](string a, string b) { add_subtag(region_list, a, b); });
+ load_language_tag_list (tags_directory, "script", [&add_subtag](string a, string b) { add_subtag(script_list, a, b); });
+ load_language_tag_list (tags_directory, "extlang", [&add_subtag](string a, string b) { add_subtag(extlang_list, a, b); });
+
+ load_language_tag_list (tags_directory, "dcnc", [](string a, string b) { dcnc_list.push_back(make_pair(a, b)); });
+}
+
+
+vector<pair<string, string>> dcp::dcnc_tags ()
+{
+ return dcnc_list;
}
diff --git a/src/language_tag.h b/src/language_tag.h
index 0f05ac12..1716a8db 100644
--- a/src/language_tag.h
+++ b/src/language_tag.h
@@ -246,6 +246,9 @@ extern std::ostream& operator<<(std::ostream& os, dcp::LanguageTag const& tag);
extern void load_language_tag_lists (boost::filesystem::path tags_directory);
+extern std::vector<std::pair<std::string, std::string>> dcnc_tags ();
+
+
}