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())
|
||||
right.insert(right.begin(), '.');
|
||||
|
||||
// Remove all trailing numbers in the "left" side.
|
||||
std::string result_str;
|
||||
width = 0;
|
||||
int num = -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 end = left.rend();
|
||||
|
||||
|
|
Loading…
Reference in New Issue