Move back to the previous element.
Returns true and updates current
if successful. Returns false
and sets current
to null if there is no previous element.
Source
bool movePrevious() {
_nextPosition = _position;
if (_position == 0) {
_currentCodePoint = null;
return false;
}
int position = _position - 1;
int codeUnit = string.codeUnitAt(position);
if (_isTrailSurrogate(codeUnit) && position > 0) {
int prevCodeUnit = string.codeUnitAt(position - 1);
if (_isLeadSurrogate(prevCodeUnit)) {
_position = position - 1;
_currentCodePoint = _combineSurrogatePair(prevCodeUnit, codeUnit);
return true;
}
}
_position = position;
_currentCodePoint = codeUnit;
return true;
}