mirror of https://github.com/aseprite/aseprite.git
Merge 7abfdcf97e
into 95d0dee4e0
This commit is contained in:
commit
1ddae4e57d
|
@ -26,12 +26,46 @@ int split_filename(const std::string& filename, std::string& left, std::string&
|
||||||
if (!right.empty())
|
if (!right.empty())
|
||||||
right.insert(right.begin(), '.');
|
right.insert(right.begin(), '.');
|
||||||
|
|
||||||
// Remove all trailing numbers in the "left" side.
|
|
||||||
std::string result_str;
|
|
||||||
width = 0;
|
width = 0;
|
||||||
int num = -1;
|
int num = -1;
|
||||||
int order = 1;
|
int order = 1;
|
||||||
|
|
||||||
|
// Case 1: Parenthesis or square brackets
|
||||||
|
if (left.size() >= 3 && (left.back() == ')' || left.back() == ']')) {
|
||||||
|
char const closing = left.back();
|
||||||
|
char const opening = (closing == ')') ? '(' : '[';
|
||||||
|
|
||||||
|
auto it = left.rbegin();
|
||||||
|
auto end = left.rend();
|
||||||
|
++it;
|
||||||
|
|
||||||
|
while (it != end) {
|
||||||
|
const int chr = *it;
|
||||||
|
if (chr >= '0' && chr <= '9') {
|
||||||
|
if (num < 0)
|
||||||
|
num = 0;
|
||||||
|
|
||||||
|
num += order * (chr - '0');
|
||||||
|
order *= 10;
|
||||||
|
++width;
|
||||||
|
++it;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (width > 0 && it != end && *it == opening) {
|
||||||
|
left.erase(it.base(), left.end());
|
||||||
|
right.insert(right.begin(), closing);
|
||||||
|
}
|
||||||
|
|
||||||
|
return num;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Case 2: Default behavior
|
||||||
|
num = -1;
|
||||||
|
order = 1;
|
||||||
|
|
||||||
auto it = left.rbegin();
|
auto it = left.rbegin();
|
||||||
auto end = left.rend();
|
auto end = left.rend();
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue