mirror of
https://github.com/SerenityOS/serenity
synced 2024-10-15 20:33:10 +00:00
Spreadsheet: Fix column index to number conversion
The output of Spreadsheet::convert_from_string() is now correct for numbers larger than 26^2.
This commit is contained in:
parent
6b2f3ad6c8
commit
ec5d2a5144
|
@ -98,6 +98,9 @@ static Optional<size_t> convert_from_string(StringView str, unsigned base = 26,
|
|||
|
||||
VERIFY(base >= 2 && base <= map.length());
|
||||
|
||||
if (str.is_empty())
|
||||
return {};
|
||||
|
||||
size_t value = 0;
|
||||
auto const len = str.length();
|
||||
for (auto i = 0u; i < len; i++) {
|
||||
|
@ -105,13 +108,10 @@ static Optional<size_t> convert_from_string(StringView str, unsigned base = 26,
|
|||
if (!maybe_index.has_value())
|
||||
return {};
|
||||
size_t digit_value = maybe_index.value();
|
||||
// NOTE: Refer to the note in `String::bijective_base_from()'.
|
||||
if (i == 0 && len > 1)
|
||||
++digit_value;
|
||||
value += digit_value * AK::pow<float>(base, len - 1 - i);
|
||||
value += (digit_value + 1) * AK::pow<float>(base, len - 1 - i);
|
||||
}
|
||||
|
||||
return value;
|
||||
return value - 1;
|
||||
}
|
||||
|
||||
DeprecatedString Sheet::add_column()
|
||||
|
|
Loading…
Reference in a new issue