Skip to content

Commit 6d7a4b2

Browse files
authored
adjusting the case (#11)
1 parent 02ee9ff commit 6d7a4b2

File tree

4 files changed

+47
-47
lines changed

4 files changed

+47
-47
lines changed

benchmarks/benchmark.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ void bench(const std::vector<std::string> &input) {
4343
bench(
4444
[&input, &sum]() {
4545
for (std::string_view v : input) {
46-
sum += version_weaver::validate(v);
46+
sum = sum + version_weaver::validate(v);
4747
}
4848
},
4949
min_repeat, min_time_ns, max_repeat));

include/version_weaver.h

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ std::string minimum(std::string_view range);
2121
// X is the major version, Y is the minor version, and Z is the patch version.
2222
// Each element MUST increase numerically.
2323
// For instance: 1.9.0 -> 1.10.0 -> 1.11.0.
24-
struct Version {
24+
struct version {
2525
std::string_view major;
2626
std::string_view minor;
2727
std::string_view patch;
@@ -51,22 +51,22 @@ struct Version {
5151
std::optional<std::string_view> build;
5252
};
5353

54-
enum ParseError {
54+
enum parse_error {
5555
VERSION_LARGER_THAN_MAX_LENGTH,
5656
INVALID_INPUT,
5757
};
5858

5959
// This will return a cleaned and trimmed semver version.
6060
// If the provided version is not valid a null will be returned.
6161
// This does not work for ranges.
62-
std::expected<Version, ParseError> clean(std::string_view input);
62+
std::expected<version, parse_error> clean(std::string_view input);
6363

64-
std::expected<Version, ParseError> parse(std::string_view version);
64+
std::expected<version, parse_error> parse(std::string_view version);
6565
} // namespace version_weaver
6666

6767
// https://semver.org/#spec-item-11
68-
inline auto operator<=>(const version_weaver::Version& first,
69-
const version_weaver::Version& second) {
68+
inline auto operator<=>(const version_weaver::version& first,
69+
const version_weaver::version& second) {
7070
auto number_string_compare = [](std::string_view first,
7171
std::string_view second) {
7272
if (first.size() > second.size()) {

src/version_weaver.cpp

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,10 @@ constexpr inline bool contains_only_digits(std::string_view input) noexcept {
2020
return input.find_first_not_of("0123456789") == std::string_view::npos;
2121
}
2222

23-
std::expected<Version, ParseError> clean(std::string_view input) {
23+
std::expected<version, parse_error> clean(std::string_view input) {
2424
std::string_view range = input;
2525
trim_whitespace(&range);
26-
if (range.empty()) return std::unexpected(ParseError::INVALID_INPUT);
26+
if (range.empty()) return std::unexpected(parse_error::INVALID_INPUT);
2727

2828
// Trim any leading value expect = and v.
2929
while (!range.empty() && (range.front() == '=' || range.front() == 'v')) {
@@ -32,15 +32,15 @@ std::expected<Version, ParseError> clean(std::string_view input) {
3232

3333
// If range starts with a non-digit character, it is invalid.
3434
if (!range.empty() && !std::isdigit(range.front())) {
35-
return std::unexpected(ParseError::INVALID_INPUT);
35+
return std::unexpected(parse_error::INVALID_INPUT);
3636
}
3737

3838
return parse(range);
3939
}
4040

41-
std::expected<Version, ParseError> parse(std::string_view input) {
41+
std::expected<version, parse_error> parse(std::string_view input) {
4242
if (input.size() > MAX_VERSION_LENGTH) {
43-
return std::unexpected(ParseError::VERSION_LARGER_THAN_MAX_LENGTH);
43+
return std::unexpected(parse_error::VERSION_LARGER_THAN_MAX_LENGTH);
4444
}
4545

4646
std::string_view input_copy = input;
@@ -49,33 +49,33 @@ std::expected<Version, ParseError> parse(std::string_view input) {
4949
auto dot_iterator = input_copy.find('.');
5050
if (dot_iterator == std::string_view::npos) {
5151
// Only major exists. No minor or patch.
52-
return std::unexpected(ParseError::INVALID_INPUT);
52+
return std::unexpected(parse_error::INVALID_INPUT);
5353
}
54-
Version version;
54+
version version;
5555
auto major = input_copy.substr(0, dot_iterator);
5656

5757
if (major.empty() || major.front() == '0') {
5858
// Version components can not have leading zeroes.
59-
return std::unexpected(ParseError::INVALID_INPUT);
59+
return std::unexpected(parse_error::INVALID_INPUT);
6060
}
6161
if (!contains_only_digits(major)) {
62-
return std::unexpected(ParseError::INVALID_INPUT);
62+
return std::unexpected(parse_error::INVALID_INPUT);
6363
}
6464
version.major = major;
6565
input_copy = input_copy.substr(dot_iterator + 1);
6666
dot_iterator = input_copy.find('.');
6767
if (dot_iterator == std::string_view::npos) {
6868
// Only major and minor exists. No patch.
69-
return std::unexpected(ParseError::INVALID_INPUT);
69+
return std::unexpected(parse_error::INVALID_INPUT);
7070
}
7171

7272
auto minor = input_copy.substr(0, dot_iterator);
7373
if (minor.empty() || (minor.front() == '0' && minor.size() > 1)) {
7474
// Version components can not have leading zeroes.
75-
return std::unexpected(ParseError::INVALID_INPUT);
75+
return std::unexpected(parse_error::INVALID_INPUT);
7676
}
7777
if (!contains_only_digits(minor)) {
78-
return std::unexpected(ParseError::INVALID_INPUT);
78+
return std::unexpected(parse_error::INVALID_INPUT);
7979
}
8080
version.minor = minor;
8181
input_copy = input_copy.substr(dot_iterator + 1);
@@ -84,10 +84,10 @@ std::expected<Version, ParseError> parse(std::string_view input) {
8484
? input_copy
8585
: input_copy.substr(0, dot_iterator);
8686
if (patch.empty() || (patch.front() == '0' && patch.size() > 1)) {
87-
return std::unexpected(ParseError::INVALID_INPUT);
87+
return std::unexpected(parse_error::INVALID_INPUT);
8888
}
8989
if (!contains_only_digits(patch)) {
90-
return std::unexpected(ParseError::INVALID_INPUT);
90+
return std::unexpected(parse_error::INVALID_INPUT);
9191
}
9292
version.patch = patch;
9393
if (dot_iterator == std::string_view::npos) {
@@ -101,7 +101,7 @@ std::expected<Version, ParseError> parse(std::string_view input) {
101101
? input_copy
102102
: input_copy.substr(0, dot_iterator);
103103
if (prerelease.empty()) {
104-
return std::unexpected(ParseError::INVALID_INPUT);
104+
return std::unexpected(parse_error::INVALID_INPUT);
105105
}
106106
version.pre_release = prerelease;
107107
if (dot_iterator == std::string_view::npos) {
@@ -110,7 +110,7 @@ std::expected<Version, ParseError> parse(std::string_view input) {
110110
input_copy = input_copy.substr(dot_iterator + 1);
111111
}
112112
if (input_copy.empty()) {
113-
return std::unexpected(ParseError::INVALID_INPUT);
113+
return std::unexpected(parse_error::INVALID_INPUT);
114114
}
115115
version.build = input_copy;
116116
return version;

tests/basictests.cpp

Lines changed: 24 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -5,22 +5,22 @@
55
#include <gtest/gtest.h>
66

77
using TestData =
8-
std::pair<std::string, std::expected<version_weaver::Version,
9-
version_weaver::ParseError>>;
8+
std::pair<std::string, std::expected<version_weaver::version,
9+
version_weaver::parse_error>>;
1010
std::vector<TestData> parse_values = {
11-
{"1.0.0", version_weaver::Version{"1", "0", "0"}},
12-
{"1.0.0-alpha", version_weaver::Version{"1", "0", "0", "alpha"}},
13-
{"1.0.0-alpha.1", version_weaver::Version{"1", "0", "0", "alpha.1"}},
14-
{"1.0.0-0.3.7", version_weaver::Version{"1", "0", "0", "0.3.7"}},
15-
{"1.0.0-x.7.z.92", version_weaver::Version{"1", "0", "0", "x.7.z.92"}},
16-
{"1.0.0-x-y-z.--", version_weaver::Version{"1", "0", "0", "x-y-z.--"}},
17-
{"1.0.0-alpha+001", version_weaver::Version{"1", "0", "0", "alpha", "001"}},
11+
{"1.0.0", version_weaver::version{"1", "0", "0"}},
12+
{"1.0.0-alpha", version_weaver::version{"1", "0", "0", "alpha"}},
13+
{"1.0.0-alpha.1", version_weaver::version{"1", "0", "0", "alpha.1"}},
14+
{"1.0.0-0.3.7", version_weaver::version{"1", "0", "0", "0.3.7"}},
15+
{"1.0.0-x.7.z.92", version_weaver::version{"1", "0", "0", "x.7.z.92"}},
16+
{"1.0.0-x-y-z.--", version_weaver::version{"1", "0", "0", "x-y-z.--"}},
17+
{"1.0.0-alpha+001", version_weaver::version{"1", "0", "0", "alpha", "001"}},
1818
{"1.0.0+20130313144700",
19-
version_weaver::Version{"1", "0", "0", std::nullopt, "20130313144700"}},
19+
version_weaver::version{"1", "0", "0", std::nullopt, "20130313144700"}},
2020
{"1.0.0-beta+exp.sha.5114f85",
21-
version_weaver::Version{"1", "0", "0", "beta", "exp.sha.5114f85"}},
21+
version_weaver::version{"1", "0", "0", "beta", "exp.sha.5114f85"}},
2222
{"1.0.0+21AF26D3----117B344092BD",
23-
version_weaver::Version{"1", "0", "0", std::nullopt,
23+
version_weaver::version{"1", "0", "0", std::nullopt,
2424
"21AF26D3----117B344092BD"}},
2525

2626
};
@@ -54,18 +54,18 @@ TEST(basictests, leading_zeroes) {
5454
}
5555

5656
std::vector<TestData> clean_values = {
57-
{"1.2.3", version_weaver::Version{"1", "2", "3"}},
58-
{" 1.2.3 ", version_weaver::Version{"1", "2", "3"}},
59-
{" 1.2.3-4 ", version_weaver::Version{"1", "2", "3", "4"}},
60-
{" 1.2.3-pre ", version_weaver::Version{"1", "2", "3", "pre"}},
61-
{" =v1.2.3 ", version_weaver::Version{"1", "2", "3"}},
62-
{"v1.2.3", version_weaver::Version{"1", "2", "3"}},
63-
{" v1.2.3 ", version_weaver::Version{"1", "2", "3"}},
64-
{"\t1.2.3", version_weaver::Version{"1", "2", "3"}},
65-
{">1.2.3", std::unexpected(version_weaver::ParseError::INVALID_INPUT)},
66-
{"~1.2.3", std::unexpected(version_weaver::ParseError::INVALID_INPUT)},
67-
{"<=1.2.3", std::unexpected(version_weaver::ParseError::INVALID_INPUT)},
68-
{"1.2.x", std::unexpected(version_weaver::ParseError::INVALID_INPUT)},
57+
{"1.2.3", version_weaver::version{"1", "2", "3"}},
58+
{" 1.2.3 ", version_weaver::version{"1", "2", "3"}},
59+
{" 1.2.3-4 ", version_weaver::version{"1", "2", "3", "4"}},
60+
{" 1.2.3-pre ", version_weaver::version{"1", "2", "3", "pre"}},
61+
{" =v1.2.3 ", version_weaver::version{"1", "2", "3"}},
62+
{"v1.2.3", version_weaver::version{"1", "2", "3"}},
63+
{" v1.2.3 ", version_weaver::version{"1", "2", "3"}},
64+
{"\t1.2.3", version_weaver::version{"1", "2", "3"}},
65+
{">1.2.3", std::unexpected(version_weaver::parse_error::INVALID_INPUT)},
66+
{"~1.2.3", std::unexpected(version_weaver::parse_error::INVALID_INPUT)},
67+
{"<=1.2.3", std::unexpected(version_weaver::parse_error::INVALID_INPUT)},
68+
{"1.2.x", std::unexpected(version_weaver::parse_error::INVALID_INPUT)},
6969
};
7070

7171
TEST(basictests, clean) {

0 commit comments

Comments
 (0)