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

Function isKebabString

lib/validator/component_name.cpp:24–58  ·  view source on GitHub ↗

label ::= ( '-' ) first-fragment ::= | first-word ::= [a-z] [0-9a-z] first-acronym ::= [A-Z] [0-9A-Z] fragment ::= | word ::= [0-9a-z]+ acronym ::= [0-9A-Z]+

Source from the content-addressed store, hash-verified

22// word ::= [0-9a-z]+
23// acronym ::= [0-9A-Z]+
24bool isKebabString(std::string_view Input) {
25 bool IsFirstPart = true;
26 bool Uppercase = false;
27 bool Lowercase = false;
28 bool Digit = false;
29
30 for (char C : Input) {
31 if (islower(C)) {
32 if (Uppercase)
33 return false;
34 Lowercase = true;
35 } else if (isupper(C)) {
36 if (Lowercase)
37 return false;
38 Uppercase = true;
39 } else if (isdigit(C)) {
40 if (IsFirstPart && !(Uppercase || Lowercase))
41 return false;
42 Digit = true;
43 } else if (C == '-') {
44 if (Uppercase || Lowercase || Digit) {
45 IsFirstPart = false;
46 Uppercase = false;
47 Lowercase = false;
48 Digit = false;
49 } else {
50 return false;
51 }
52 } else {
53 return false;
54 }
55 }
56
57 return Input.size() > 0 && Input.back() != '-';
58}
59
60namespace {
61

Callers 3

tryReadKebabFunction · 0.85
parseMethod · 0.85
validateMethod · 0.85

Calls 2

backMethod · 0.80
sizeMethod · 0.45

Tested by

no test coverage detected