MCPcopy Create free account
hub / github.com/WasmEdge/WasmEdge / isValidSemver

Function isValidSemver

lib/validator/component_name.cpp:233–272  ·  view source on GitHub ↗

MAJOR.MINOR.PATCH[-prerelease][+build] per semver.org 2.0

Source from the content-addressed store, hash-verified

231
232// MAJOR.MINOR.PATCH[-prerelease][+build] per semver.org 2.0
233bool isValidSemver(std::string_view V) {
234 if (V.empty())
235 return false;
236
237 // Parse MAJOR.MINOR.PATCH
238 for (int I = 0; I < 3; I++) {
239 size_t End = parseNumeric(V);
240 if (End == std::string_view::npos)
241 return false;
242 if (I < 2) {
243 if (End >= V.size() || V[End] != '.')
244 return false;
245 V.remove_prefix(End + 1);
246 } else {
247 V.remove_prefix(End);
248 }
249 }
250
251 if (V.empty())
252 return true;
253
254 if (V[0] == '-') {
255 V.remove_prefix(1);
256 size_t PlusPos = V.find('+');
257 std::string_view PreRelease =
258 (PlusPos == V.npos) ? V : V.substr(0, PlusPos);
259 if (!isPreReleaseOrBuild(PreRelease, true))
260 return false;
261 if (PlusPos == V.npos)
262 return true;
263 V.remove_prefix(PlusPos);
264 }
265
266 if (!V.empty() && V[0] == '+') {
267 V.remove_prefix(1);
268 return isPreReleaseOrBuild(V, false);
269 }
270
271 return V.empty();
272}
273
274bool isVersion(std::string_view V) {
275 return isCanonVersion(V) || isValidSemver(V);

Callers 2

isVersionFunction · 0.85
parseMethod · 0.85

Calls 6

parseNumericFunction · 0.85
isPreReleaseOrBuildFunction · 0.85
substrMethod · 0.80
emptyMethod · 0.45
sizeMethod · 0.45
findMethod · 0.45

Tested by

no test coverage detected