BashSpark
Loading...
Searching...
No Matches
shell_def.h
Go to the documentation of this file.
1
29#pragma once
30
31#include <string>
32
33namespace bs {
45 constexpr bool is_arg(const std::string_view &sArg) {
46 if (sArg.length() > 19)return false;
47 for (const char cChar: sArg) {
48 if (cChar < '0' || cChar > '9') return false;
49 }
50 return true;
51 }
52
64 inline bool is_arg(const std::string &sArg) {
65 if (sArg.empty() || sArg.length() > 19)return false;
66 for (const char cChar: sArg) {
67 if (cChar < '0' || cChar > '9') return false;
68 }
69 return true;
70 }
71
86 constexpr bool is_var(const std::string_view &sVar) {
87 if (sVar.empty())return false;
88 char cChar = sVar[0];
89 if (
90 cChar != '_'
91 && (cChar < 'a' || cChar > 'z')
92 && (cChar < 'A' || cChar > 'Z')
93 ) { return false; }
94 for (std::size_t i = 1; i < sVar.length(); ++i) {
95 cChar = sVar[i];
96 if (
97 cChar != '_'
98 && (cChar < 'a' || cChar > 'z')
99 && (cChar < 'A' || cChar > 'Z')
100 && (cChar < '0' || cChar > '9')
101 ) { return false; }
102 }
103 return true;
104 }
105
120 inline bool is_var(const std::string &sVar) {
121 if (sVar.empty())return false;
122 char cChar = sVar[0];
123 if (
124 cChar != '_'
125 && (cChar < 'a' || cChar > 'z')
126 && (cChar < 'A' || cChar > 'Z')
127 ) { return false; }
128 for (std::size_t i = 1; i < sVar.length(); ++i) {
129 cChar = sVar[i];
130 if (
131 cChar != '_'
132 && (cChar < 'a' || cChar > 'z')
133 && (cChar < 'A' || cChar > 'Z')
134 && (cChar < '0' || cChar > '9')
135 ) { return false; }
136 }
137 return true;
138 }
139
151 constexpr bool is_number(const std::string_view &sArg) {
152 if (sArg.empty())return false;
153 std::size_t i = 0;
154 if (sArg[0] == '+' || sArg[0] == '-') {
155 if (sArg.length() > 19)return false;
156 ++i;
157 } else {
158 if (sArg.length() > 18)return false;
159 }
160 while (i < sArg.length()) {
161 if (sArg[i] < '0' || sArg[i] > '9') return false;
162 ++i;
163 }
164 return true;
165 }
166}
BashSpark main namespace.
Definition command.h:39
constexpr bool is_arg(const std::string_view &sArg)
Check whether a std::string represents a valid unsigned integer argument.
Definition shell_def.h:45
constexpr bool is_var(const std::string_view &sVar)
Internal helper: check whether the given string_view is a valid variable name.
Definition shell_def.h:86
constexpr bool is_number(const std::string_view &sArg)
Checks if the provided string is a valid representation of a number.
Definition shell_def.h:151