comparison dep/animia/src/util.cc @ 152:8700806c2cc2

dep/animia: awesome new breaking changes! I'm so tired
author Paper <mrpapersonic@gmail.com>
date Wed, 15 Nov 2023 02:34:59 -0500
parents 28842a8d0c6b
children bd439dd6ffc5
comparison
equal deleted inserted replaced
151:54744a48a7d7 152:8700806c2cc2
1 #include <algorithm> 1 #include <algorithm>
2 #include <fstream> 2 #include <fstream>
3 #include <sstream> 3 #include <sstream>
4 #include <string> 4 #include <string>
5 #include <cctype> 5 #include <cctype>
6 #include <regex>
7
8 #include <iostream>
6 9
7 #include "animia/util.h" 10 #include "animia/util.h"
8 11
9 namespace animia::internal::util { 12 namespace animia::internal::util {
10 13
28 auto equal_chars = [](const char c1, const char c2) -> bool { 31 auto equal_chars = [](const char c1, const char c2) -> bool {
29 return std::tolower(static_cast<unsigned char>(c1)) == std::tolower(static_cast<unsigned char>(c2)); 32 return std::tolower(static_cast<unsigned char>(c1)) == std::tolower(static_cast<unsigned char>(c2));
30 }; 33 };
31 34
32 return str1.size() == str2.size() && std::equal(str1.begin(), str1.end(), str2.begin(), equal_chars); 35 return str1.size() == str2.size() && std::equal(str1.begin(), str1.end(), str2.begin(), equal_chars);
36 }
37
38 bool Stem(const std::string& filename, std::string& stem) {
39 unsigned long long pos = filename.find_last_of(".");
40 if (pos != std::string::npos)
41 return false;
42
43 stem = filename.substr(0, pos);
44 return true;
45 }
46
47 bool CheckPattern(const std::string& pattern, const std::string& str) {
48 if (pattern.empty())
49 return false;
50 if (pattern.front() == '^' && std::regex_match(str, std::regex(pattern)))
51 return true;
52 return util::EqualStrings(pattern, str);
33 } 53 }
34 54
35 bool TrimLeft(std::string& str, const char* chars) { 55 bool TrimLeft(std::string& str, const char* chars) {
36 if (str.empty()) 56 if (str.empty())
37 return false; 57 return false;