16constexpr std::string
getFile(std::string_view sv)
18 if constexpr ( include )
20 if (
auto m = ctre::match<Paths::g_includePattern>(sv) )
27 if (
auto m = ctre::match<Paths::g_usePattern>( sv ) )
45 auto str = detail::getFile<include>(line);
48 includeFiles.emplace_back(str);
51 if (includeFiles.empty())
53 includeFiles.emplace_back(detail::getFile<include>(sv));
65 const string& inputInclude1(
"#include \"blaBla.h\"\r");
66 const string& inputInclude2(
"#include <blaBla.h>");
67 const string& inputInclude3(
"# include \"blaBla.h\"");
68 const string& inputInclude4(
" #include < blaBla.h>");
69 const string& inputInclude5(
"#include < blaBla.h>\n#include < blaBla2.h >\n#include \"blaBla3.h \"");
70 const string& resultInclude(
"blaBla.h");
71 const string& resultInclude2(
"blaBla2.h");
72 const string& resultInclude3(
"blaBla3.h");
74 const string temp1 = getFiles<true>(inputInclude1).front();
77 const string temp2 = getFiles<true>(inputInclude2).front();
80 const string temp3 = getFiles<true>(inputInclude3).front();
83 const string temp4 = getFiles<true>(inputInclude4).front();
93 const string& inputUse1(
"use(\"blaBla.h\")");
94 const string& inputUse2(
"use( \"blaBla.h\")");
95 const string& inputUse3(
" use (\"blaBla.h\")");
96 const string& inputUse4(
"use(\"blaBla.h\" )");
97 const string& inputUse5(
"use(\"blaBla.h\")\nuse(\"blaBla2.h\")" );
98 const string& resultUse(
"blaBla.h");
99 const string& resultUse2(
"blaBla2.h");
101 const string temp1 = getFiles<false>(inputUse1).front();
104 const string temp2 = getFiles<false>(inputUse2).front();
107 const string temp3 = getFiles<false>(inputUse3).front();
110 const string temp4 = getFiles<false>(inputUse4).front();
123 const string& inputInclude1(
"#include\"blaBla.h\"");
124 const string& inputInclude2(
"#include<blaBla.h>");
125 const string& inputInclude3(
"# include \"blaBla.h");
126 const string& inputInclude4(
" include < blaBla.h>");
128 const string temp1 = getFiles<true>(inputInclude1).front();
130 const string temp2 = getFiles<true>(inputInclude2).front();
132 const string temp3 = getFiles<true>(inputInclude3).front();
134 const string temp4 = getFiles<true>(inputInclude4).front();
138 const string& inputUse1(
"use(\"blaBla.h)");
139 const string& inputUse2(
"usadfse( \"blaBla.h\")");
140 const string& inputUse3(
" use --- (\"blaBla.h\")");
142 const string temp1 = getFiles<false>(inputUse1).front();
144 const string temp2 = getFiles<false>(inputUse2).front();
146 const string temp3 = getFiles<false>(inputUse3).front();
154 const string input1(
"STRING TO BE TESTED");
155 const string input2(
" STRING TO BE TESTED");
165 string input(
"STRING TO BE TESTED");
167 const string match(
"TO BE");
168 const string replacement(
"HAS BEEN");
169 const string output(
"STRING HAS BEEN TESTED");
177 const string input(
"ABC");
185 const string input1(
"2");
186 const string input2(
"b");
191TEST_CASE(
"Trailing Characters Test",
"[string_tests]" )
193 const string input(
"abcdefg");
194 const string extension(
"efg");
198 constexpr size_t length = 4;
202TEST_CASE(
"Compare (case-insensitive) Test",
"[string_tests]" )
204 const string inputA(
"aBcdEf");
205 const string inputB(
"ABCdef");
206 const string inputC(
"abcdefg");
215 const char* ext1 =
"ext";
216 const char* ext2 =
"bak";
223 const string input1(
"a b c d");
230 const string input2(
"a,b,c,d");
236 const ResourcePath input {
"/path/path2/path4/file.test" };
237 const Str<256> result1(
"file.test");
256 const string input1(
"bla");
257 const string input2(
"bla\nbla");
258 const string input3(
"bla\nbla\nbla");
267 const string input1(
" abc");
268 const string input2(
"abc ");
269 const string input3(
" abc ");
270 const string result(
"abc");
290 const char* input1(
"A {} b is {} {}");
291 const char* input2(
"{:2.2f}");
292 const string result1(
"A is ok, b is 2 \n");
293 const string result2(
"12.21");
295 CHECK_EQUAL(Util::StringFormat<string>(input1,
"is ok,", 2,
"\n"), result1);
296 CHECK_EQUAL(Util::StringFormat<string>(input2, 12.2111f), result2);
301 const char* input1(
"A {} b is {} {}" );
302 const char* input2(
"{:2.2f}" );
303 const string result1(
"A is ok, b is 2 \n" );
304 const string result2(
"12.21" );
309 Util::StringFormat<string>( temp1, input1,
"is ok,", 2,
"\n" );
310 Util::StringFormat<string>( temp2, input2, 12.2111f );
318 char input[] = {
'a',
'b',
'c',
'b',
'd',
'7',
'b',
'\0' };
319 char result[] = {
'a',
'c',
'd',
'7',
'\0'};
336 constexpr const char*
const str =
"TEST test TEST";
337 constexpr std::string_view str2 = str;
339 constexpr U64 value =
_ID(str);
342 constexpr U64 value2 =
_ID_VIEW(str2.data(), str2.length());
350 const char* str =
"TEST String garbagegarbagegarbage";
351 const std::string_view str2 = str;
353 const U64 input1 =
_ID(str);
354 const U64 input2 =
_ID_VIEW(str2.data(), str2.length());
364 const char* input =
"TEST test TEST";
365 std::string input1(input);
367 for(
size_t i = 0; i < input1.size(); ++i)
377 const char* input =
"TEST-test-TEST";
bool GetLine(istringstream &input, T_str &line, char delimiter='\n')
void GetPermutations(std::string_view subject, vector< T_str > &permutationContainer)
bool CompareIgnoreCase(const char *a, const char *b) noexcept
bool BeginsWith(std::string_view input, std::string_view compare, bool ignoreWhitespace)
T_vec Split(const char *input, char delimiter)
http://stackoverflow.com/questions/236129/split-a-string-in-c
T_str & Ltrim(T_str &s)
http://stackoverflow.com/questions/216823/whats-the-best-way-to-trim-stdstring
void CStringRemoveChar(char *str, char charToRemove) noexcept
bool IsNumber(const T_str &s)
U32 LineCount(const T_str &str)
bool ReplaceStringInPlace(T_str &subject, std::span< const std::string_view > search, std::string_view replace, bool recursive=false)
T_str GetTrailingCharacters(const T_str &input, size_t count)
constexpr std::string getFile(std::string_view sv)
Handle console commands that start with a forward slash.
std::basic_stringstream< char, std::char_traits< char >, dvd_allocator< char > > stringstream
bool hasExtension(const ResourcePath &filePath, const std::string_view extensionNoDot)
constexpr U64 _ID_VIEW(const char *const str, const size_t len, const U64 value=val_64_const) noexcept
eastl::vector< Type > vector
constexpr U64 _ID(const char *const str, const U64 value=val_64_const) noexcept
std::basic_istringstream< char, std::char_traits< char >, dvd_allocator< char > > istringstream
std::basic_string< char, std::char_traits< char >, dvd_allocator< char > > string
vector< string > getFiles(const string &sv)
TEST_CASE("ByteBuffer RW Bool", "[byte_buffer]")
FileNameAndPath splitPathToNameAndLocation(const ResourcePath &input)
#define CHECK_EQUAL(LHS, RHS)