diff options
| author | Carl Hetherington <cth@carlh.net> | 2021-03-20 10:51:34 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2021-03-20 10:51:34 +0100 |
| commit | b7c316ba78f7ca634008baa3ad7d8c48403a7151 (patch) | |
| tree | 76eaa235f4e6d1009558b1784116758773a3fb4d /src | |
| parent | 9591b7486b0d56b7bc938f18a93e6d3a373e9d40 (diff) | |
Add access to DCNC list.
Diffstat (limited to 'src')
| -rw-r--r-- | src/language_tag.cc | 28 | ||||
| -rw-r--r-- | src/language_tag.h | 3 |
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 (); + + } |
