@@ -9,13 +9,13 @@ namespace {
99 using namespace pkgxx ;
1010
1111 std::vector<pkgversion::modifier> const modifiers = {
12- pkgversion::modifier (pkgversion::modifier::kind ::ALPHA, " alpha" ),
13- pkgversion::modifier (pkgversion::modifier::kind ::BETA , " beta" ),
14- pkgversion::modifier (pkgversion::modifier::kind ::RC , " pre" ),
15- pkgversion::modifier (pkgversion::modifier::kind ::RC , " rc" ),
16- pkgversion::modifier (pkgversion::modifier::kind ::DOT , " pl" ),
17- pkgversion::modifier (pkgversion::modifier::kind ::DOT , " _" ),
18- pkgversion::modifier (pkgversion::modifier::kind ::DOT , " ." )
12+ pkgversion::modifier (pkgversion::modifier::kind_t ::ALPHA, " alpha" ),
13+ pkgversion::modifier (pkgversion::modifier::kind_t ::BETA , " beta" ),
14+ pkgversion::modifier (pkgversion::modifier::kind_t ::RC , " pre" ),
15+ pkgversion::modifier (pkgversion::modifier::kind_t ::RC , " rc" ),
16+ pkgversion::modifier (pkgversion::modifier::kind_t ::DOT , " pl" ),
17+ pkgversion::modifier (pkgversion::modifier::kind_t ::DOT , " _" ),
18+ pkgversion::modifier (pkgversion::modifier::kind_t ::DOT , " ." )
1919 };
2020}
2121
@@ -38,8 +38,15 @@ namespace pkgxx {
3838 bool found_mod = false ;
3939 for (auto const & mod: modifiers) {
4040 if (ci_starts_with (it, str.end (), mod.string ())) {
41- _comps.push_back (mod);
42- it += mod.string ().size ();
41+ // It's very important to construct a new modifier
42+ // object based on the original string, otherwise
43+ // its case will not be preserved (#13).
44+ auto const len = mod.string ().size ();
45+ _comps.emplace_back (
46+ modifier (
47+ mod.kind (),
48+ std::string (it, it + len)));
49+ it += len;
4350 found_mod = true ;
4451 break ;
4552 }
@@ -58,7 +65,7 @@ namespace pkgxx {
5865 break ;
5966 }
6067 if (is_ascii_alpha (*it)) {
61- _comps.emplace_back (modifier (modifier::kind ::DOT, " " s));
68+ _comps.emplace_back (modifier (modifier::kind_t ::DOT, " " s));
6269 _comps.emplace_back (alpha (*it++));
6370 continue ;
6471 }
0 commit comments