From 2fff6362b3b27f88400e45a5de025d72222b4fa0 Mon Sep 17 00:00:00 2001 From: Idhrendur Date: Thu, 15 Sep 2022 22:52:47 -0700 Subject: [PATCH 1/4] Demonstrate embeddeding lingustic rules into text file --- Linguistics/StringExtensions.cpp | 13 ++ Linguistics/StringExtensions.h | 22 +++ Linguistics/StringExtensionsTests.cpp | 11 ++ Linguistics/adjectives.txt | 260 +++++++++++++++++++++++++ tests/CommonItemsTests.vcxproj | 6 + tests/CommonItemsTests.vcxproj.filters | 20 ++ 6 files changed, 332 insertions(+) create mode 100644 Linguistics/StringExtensions.cpp create mode 100644 Linguistics/StringExtensions.h create mode 100644 Linguistics/StringExtensionsTests.cpp create mode 100644 Linguistics/adjectives.txt diff --git a/Linguistics/StringExtensions.cpp b/Linguistics/StringExtensions.cpp new file mode 100644 index 00000000..48b75271 --- /dev/null +++ b/Linguistics/StringExtensions.cpp @@ -0,0 +1,13 @@ +#include "StringExtensions.h" + + + + +std::map commonItems::GetAdjectiveRules() +{ + std::map rules = { +#include "adjectives.txt" + }; + + return rules; +} \ No newline at end of file diff --git a/Linguistics/StringExtensions.h b/Linguistics/StringExtensions.h new file mode 100644 index 00000000..d92089f5 --- /dev/null +++ b/Linguistics/StringExtensions.h @@ -0,0 +1,22 @@ +#ifndef LINGUISTICS_STRING_EXTENSIONS_H +#define LINGUISTICS_STRING_EXTENSIONS_H + + + +#include +#include + + +namespace commonItems +{ + + +std::map GetAdjectiveRules(); + + +} + + + + +#endif // LINGUISTICS_STRING_EXTENSIONS_H \ No newline at end of file diff --git a/Linguistics/StringExtensionsTests.cpp b/Linguistics/StringExtensionsTests.cpp new file mode 100644 index 00000000..3a38e420 --- /dev/null +++ b/Linguistics/StringExtensionsTests.cpp @@ -0,0 +1,11 @@ +#include "../Linguistics/StringExtensions.h" +#include "gtest/gtest.h" + + + +TEST(StringExtensions_Tests, LinguisticRulesCanBeEmbeddedIntoFile) +{ + const auto adjective_rules = commonItems::GetAdjectiveRules(); + + EXPECT_FALSE(adjective_rules.empty()); +} \ No newline at end of file diff --git a/Linguistics/adjectives.txt b/Linguistics/adjectives.txt new file mode 100644 index 00000000..cc0f13be --- /dev/null +++ b/Linguistics/adjectives.txt @@ -0,0 +1,260 @@ +// + +// 6+ letters +{"Eswatini", "Swati"}, // Eswatini +{"Ad Pontem", "Pontan"}, +{"Verahram Qal'eh", "Verahrami"}, +{"Orkney Islands", "Orcadian"}, +{"* Islands", "*"}, // Cook Islands +{"* Republic", "*"}, // Dominican Republic +{"* Union", "*"}, // Soviet Union +{"*emirates", "*emirati"}, // United Arab Emirates +{"* Qal'eh", "*"}, +{"*[v]tzerland", "*[v]ss"}, // Switzerland +{"*zealand", "*zealander"}, // New Zealand +{"*pakistan", "*pakistani"}, // Pakistan +{"*enmark", "*anish"}, // Denmark +{"*inland", "*innish"}, // Finland +{"*reland", "*rish"}, // Ireland +{"*ailand", "*ai"}, // Thailand +{"*ontium", "*ontinian"}, // Leontium +{"*serica", "*sere"}, // Serica +{"*iohaemum", "*ius"}, // Boiohaemum +{"*fpaktos", "*upactian"}, // Nafpaktos +{"*rithymna", "*rhithymnian"}, // Rithymna +{"*thuria", "*thuriat"}, // Thuria +{"*aionia", "*aeonian"}, // Paionia +{"*dhra Pradesh", "*dhrulu"}, // Andhra Pradesh +{"*al Pradesh", "*ali"}, // Arunachal Pradesh +{"*kshadweep", "*ccadivian"}, // Lakshadweep +{"*galand", "*galandese"}, // Nagaland +{"* Nadu", "*"}, // Tamil Nadu + +// 5 letters +{"*allia", "*aulish"}, // Gallia +{"*atium", "*atin"}, // Latium +{"*china", "*chinese"}, // Indochina +{"*eland", "*elandic"}, // Iceland +{"*istan", "*"}, // Tajikistan +{"*khand", "*khandi"}, // Jharkhand +{"*lades", "*ladian"}, // Cyclades +{"*mania", "*manic"}, // Germania +{"*nland", "*nlander"}, // Greenland +{"*pelos", "*pelitan"}, // Skopelos +{"*pland", "*ppish"}, // Lapland +{"*rrhae", "*rrean"}, // Serrhae +{"*ryana", "*ryanvi"}, // Haryana +{"*shtra", "*shtrian"}, // Maharashtra +{"*stein", "*steiner"}, // Liechtenstein +{"*tland", "*ttish"}, // Scotland +{"*ttium", "*ttian"}, // Bruttium +{"*uiana", "*uianese"}, // Guiana +{"*venia", "*vene"}, // Slovenia +{"*yotte", "*horan"}, // Mayotte +{"*zoram", "*zo"}, // Mizoram +{"*[c]land", "*[c]lish"}, // England +{"*[v]land", "*[v]lish"}, // Poland + +// 4 Letters +{"*aïda", "*idonian"}, // Saïda +{"*ammu", "*ammu"}, // Jammu +{"*ance", "*ench"}, // France +{"*anon", "*anese"}, // Lebanon +{"*aras", "*arentine"}, // Taras +{"*aros", "*arian"}, // Paros +{"*berg", "*berger"}, // Nuremberg +{"*burg", "*burger"}, // Hamburg +{"*cese", "*cesan"}, // Diocese +{"*echk", "*echk"}, +{"*eece", "*eek"}, // Greece +{"*eese", "*eese"}, // Cheese +{"*egal", "*egalese"}, // Senegal +{"*elos", "*elian"}, // Delos +{"*etus", "*esian"}, +{"*gana", "*ganite"}, // Telangana +{"*gina", "*ginetan"}, // Aegina +{"*gnac", "*gnac"}, +{"*hana", "*hanaian"}, // Ghana +{"*hria", "*hriasian"}, // Thria +{"*iana", "*ian"}, // Bactriana +{"*irus", "*irote"}, // Epirus +{"*lius", "*liasian"}, // Phlius +{"*lles", "*llois"}, // Seychelles +{"*mnus", "*mnian"}, // Epidamnus +{"*neia", "*nean"}, // Mantineia +{"*nium", "*nite"}, // Samnium +{"*ngal", "*ngali"}, // West Bengal +{"*nsck", "*nsck"}, +{"*ntum", "*ntine"}, // Tarentum +{"*ntus", "*ntic"}, // Pontus +{"*odes", "*odian"}, // Rhodes +{"*orus", "*oran"}, // Bosporus +{"*pain", "*panish"}, // Spain +{"*prus", "*priote"}, // Cyprus +{"*rala", "*ralite"}, // Kerala +{"*rrae", "*rrean"}, // Serrae +{"*stan", "*"}, // Kazakhstan +{"*tain", "*tish"}, // Great Britain +{"*than", "*thani"}, // Rajasthan +{"*thon", "*thonian"}, // Marathon +{"*tica", "*tic"}, // Antarctica +{"*tium", "*tine"}, // Byzantium +{"*udan", "*udanese"}, // Sudan +{"*urma", "*urmese"}, // Burma +{"*urus", "*urian"}, // Epidaurus +{"*qahn", "*qahni"}, +{"*rgos", "*rgive"}, // Argos +{"*yros", "*yrian"}, // Nisyros +{"*[v]cis", "*[v]cian"}, // Phocis +{"*[c]cis", "*[c]cidian"}, // Chalcis + +// 3 Letters +{"*ain", "*aini"}, // Bahrain +{"*ales", "*elsh"}, // Wales +{"*ame", "*amese"}, // Suriname +{"*ara", "*arian"}, // Megara +{"*ati", "*ati"}, // Kiribati +{"*bah", "*ban"}, +{"*bes", "*ban"}, // Thebes +{"*car", "*can"}, // Madagascar +{"*cau", "*canese"}, // Macau +{"*dai", "*dan"}, // Oiniadai +{"*den", "*dish"}, // Sweden +{"*des", "*dan"}, // Oiniades +{"*dos", "*dian"}, // Barbados +{"*don", "*donian"}, // Sidon +{"*eia", "*ian"}, // Eleia +{"*ene", "*enian"}, // Cyrene +{"*eru", "*eruvian"}, // Peru +{"*gal", "*guese"}, // Portugal +{"*gac", "*gac"}, +{"*iam", "*iamese"}, // Siam +{"*ini", "*inian"}, // Leontini +{"*ion", "*ian"}, // Rhegion +{"*ios", "*iot"}, // Chios +{"*ite", "*itian"}, // Melite +{"*jab", "*jabi"}, // Punjab +{"*jan", "*jani"}, // Azerbaijan +{"*kia", "*k"}, // Slovakia +{"*kim", "*kimese"}, // Sikkim +{"*kun", "*kunite"}, +{"*lan", "*lanese"}, // Milan +{"*los", "*losian"}, // Pylos +{"*lta", "*ltese"}, // Malta +{"*man", "*mani"}, // Oman +{"*mas", "*mian"}, // Bahamas +{"*men", "*meni"}, // Yemen +{"*mir", "*miri"}, // Kashmir +{"*mis", "*minian"}, // Salamis +{"*mon", "*monian"}, // Lakedaemon +{"*mor", "*morese"}, // Timor +{"*nae", "*naean"}, // Mycenae +{"*nce", "*ntine"}, // Florence +{"*nik", "*nikian"}, +{"*nes", "*ne"}, // Philippines +{"*num", "*ne"}, // Sabinum +{"*oon", "*oonian"}, // Cameroon +{"*pan", "*panese"}, // Japan +{"*pur", "*puri"}, // Manipur +{"*que", "*can"}, // Martinique +{"*qah", "*qian"}, +{"*rii", "*rian"}, // Thurii +{"*ros", "*ran"}, // Comoros +{"*sey", "*sey"}, // Jersey +{"*sus", "*sian"}, // Ephesus +{"*tan", "*tanese"}, // Bhutan +{"*ton", "*tonian"}, // Croton +{"*tus", "*tian"}, // Carystus +{"*ura", "*uran"}, // Tripura +{"*use", "*usan"}, // Syracuse +{"*yon", "*yonian"}, // Sikyon (rule made up) +{"*yōn", "*yōnian"}, // Sikyōn (rule made up) +{"*zen", "*zenian"}, // Troezen +{"*[v]ng", "*[v]nger"}, // Hong Kong +{"*[v]os", "*[v]o"}, // Laos +{"*[v]us", "*[v]an"}, // Mauritius +{"*[c]ey", "*[c]ish"}, // Turkey +{"*[v]am", "*[v]amanian"}, // Guam +{"*[c]am", "*[c]amese"}, // Vietnam +{"*[c]us", "*[c]usian"}, // Belarus +{"*[v]ch", "*[v]chite"}, // Schech +{"*[v]um", "*[v]an"}, // Belgium +{"*[c]um", "*[c]ian"}, // Pergamum + +// 2 Letters +{"*ab", "*abite"}, // Achtab (rule made up) +{"*ad", "*adian"}, // Chad +{"*ae", "*ian"}, // Colossae +{"*ah", "*ah"}, +{"*aí", "*aian"}, // Kolōnaí (Colonae in Latin) -> Kolonaian (rule made up) +{"*ai", "*aian"}, // Kolōnai +{"*al", "*ali"}, // Nepal +{"*an", "*anian"}, // Jordan +{"*ao", "*aoan"}, // Curaçao +{"*ar", "*ari"}, // Qatar +{"*as", "*an"}, // Honduras +{"*at", "*ati"}, // Gujarat +{"*au", "*auan"}, // Palau +{"*co", "*can"}, // Morocco +{"*de", "*dean"}, // Cape Verde +{"*eh", "*ehi"}, +{"*el", "*eli"}, // Israel +{"*em", "*emite"}, // Zarem (rule made up) +{"*en", "*enese"}, // Jan Mayen +{"*es", "*ian"}, // Maldives +{"*ge", "*ginian"}, // Carthage +{"*gh", "*ghi"}, +{"*gk", "*gkan"}, +{"*in", "*inese"}, // Benin +{"*im", "*imite"}, +{"*is", "*ian"}, // Locris +{"*it", "*iti"}, // Kuwait +{"*le", "*lean"}, // Chile +{"*kh", "*khi"}, +{"*ll", "*llese"}, // Marshall +{"*me", "*man"}, // Rome +{"*my", "*mois"}, // Saint Barthélemy +{"*na", "*nian"}, // Argentina +{"*nj", "*nji"}, +{"*ny", "*n"}, // Germany +{"*oe", "*oese"}, // Faroe +{"*oh", "*ohan"}, +{"*on", "*onese"}, // Gabon +{"*oy", "*ojan"}, // Troy +{"*os", "*ian"}, // Thasos +{"*ra", "*rean"}, // Corcyra +{"*re", "*rean"}, // Singapore +{"*rh", "*rhi"}, // Chandigarh +{"*ro", "*rin"}, // Montenegro +{"*rn", "*rnite"}, // made up: Arn -> Arnite +{"*sh", "*shi"}, // Bangladesh +{"*ta", "*tan"}, // Egesta +{"*te", "*tan"}, // Crete +{"*th", "*thian"}, // Vilath (rule made up) +{"*ue", "*uan"}, // Niue +{"*ul", "*ulish"}, // Gaul +{"*vo", "*var"}, // Kosovo +{"*we", "*wean"}, // Zimbabwe +{"*yk", "*yk"}, // Karamyk (rule made up) +{"*ze", "*zean"}, // Belize +{"*[v]h", "*[v]hite"}, +{"*[v]k", "*[v]kian"}, +{"*[c]s", "*[c]ian"}, // Athens +{"*[v]y", "*[v]yan"}, // Paraguay +{"*[v]z", "*[v]zite"}, // Ziz (rule made up) + +// 1 Letter +{"*a", "*an"}, // Libya +{"*d", "*der"}, // Dortmund +{"*e", "*ian"}, // Ukraine +{"*g", "*gish"}, // Luxembourg +{"*i", "*ian"}, // Burundi +{"*k", "*kian"}, +{"*l", "*lian"}, // Brazil +{"*o", "*olese"}, // Congo +{"*q", "*qi"}, // Iraq +{"*r", "*rian"}, // Ecuador +{"*t", "*tian"}, // Egypt +{"*u", "*uan"}, // Vanuatu +{"*x", "*xian"}, // Essex +{"*y", "*ian"} // Hungary \ No newline at end of file diff --git a/tests/CommonItemsTests.vcxproj b/tests/CommonItemsTests.vcxproj index 6692102d..61d41bca 100644 --- a/tests/CommonItemsTests.vcxproj +++ b/tests/CommonItemsTests.vcxproj @@ -161,6 +161,8 @@ + + @@ -203,6 +205,7 @@ + @@ -234,6 +237,9 @@ %(RecursiveDir)\%(Filename)%(Extension) + + + diff --git a/tests/CommonItemsTests.vcxproj.filters b/tests/CommonItemsTests.vcxproj.filters index 836de959..125d75d7 100644 --- a/tests/CommonItemsTests.vcxproj.filters +++ b/tests/CommonItemsTests.vcxproj.filters @@ -79,6 +79,12 @@ {2b71081d-5abb-4039-a19f-168a026762aa} + + {d1d92ac4-7d81-428f-b46f-d243484024ae} + + + {182a3422-ae23-4815-8a9d-f6c32614ac33} + @@ -201,6 +207,12 @@ tests\Localization + + commonItems\Linguistics + + + tests\Linguistics + @@ -266,10 +278,18 @@ commonItems\Localization + + commonItems\Linguistics + TestFiles + + + commonItems\Linguistics + + \ No newline at end of file From 08be51a8faa235133c157cc77a55f54897357f05 Mon Sep 17 00:00:00 2001 From: Idhrendur Date: Thu, 15 Sep 2022 22:55:36 -0700 Subject: [PATCH 2/4] Clang format --- Linguistics/StringExtensions.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/Linguistics/StringExtensions.cpp b/Linguistics/StringExtensions.cpp index 48b75271..2717217c 100644 --- a/Linguistics/StringExtensions.cpp +++ b/Linguistics/StringExtensions.cpp @@ -2,7 +2,6 @@ - std::map commonItems::GetAdjectiveRules() { std::map rules = { From ff78eda79ca9150833c4f5381e119e118ce29220 Mon Sep 17 00:00:00 2001 From: Idhrendur Date: Thu, 15 Sep 2022 22:58:09 -0700 Subject: [PATCH 3/4] More clang format --- Linguistics/StringExtensions.h | 1 - 1 file changed, 1 deletion(-) diff --git a/Linguistics/StringExtensions.h b/Linguistics/StringExtensions.h index d92089f5..0f67faa3 100644 --- a/Linguistics/StringExtensions.h +++ b/Linguistics/StringExtensions.h @@ -18,5 +18,4 @@ std::map GetAdjectiveRules(); - #endif // LINGUISTICS_STRING_EXTENSIONS_H \ No newline at end of file From 456fdc7bb3b62e674a2b52dd90e0c152f1b1aee9 Mon Sep 17 00:00:00 2001 From: Idhrendur Date: Thu, 15 Sep 2022 22:59:36 -0700 Subject: [PATCH 4/4] Use an ordered container --- Linguistics/StringExtensions.cpp | 4 ++-- Linguistics/StringExtensions.h | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Linguistics/StringExtensions.cpp b/Linguistics/StringExtensions.cpp index 2717217c..fbb25fc9 100644 --- a/Linguistics/StringExtensions.cpp +++ b/Linguistics/StringExtensions.cpp @@ -2,9 +2,9 @@ -std::map commonItems::GetAdjectiveRules() +std::vector> commonItems::GetAdjectiveRules() { - std::map rules = { + std::vector> rules = { #include "adjectives.txt" }; diff --git a/Linguistics/StringExtensions.h b/Linguistics/StringExtensions.h index 0f67faa3..39dedf58 100644 --- a/Linguistics/StringExtensions.h +++ b/Linguistics/StringExtensions.h @@ -3,15 +3,15 @@ -#include #include +#include namespace commonItems { -std::map GetAdjectiveRules(); +std::vector> GetAdjectiveRules(); }