int lookAheadRegional()

in lib/src/grapheme_clusters/breaks.dart [178:199]


int lookAheadRegional(String base, int start, int cursor) {
  // Has just seen second regional indicator.
  // Figure out if there are an odd or even number of preceding RIs.
  // ALL REGIONAL INDICATORS ARE NON-BMP CHARACTERS.
  var count = 0;
  var index = cursor;
  while (index - 2 >= start) {
    var tail = base.codeUnitAt(index - 1);
    if (tail & 0xFC00 != 0xDC00) break;
    var lead = base.codeUnitAt(index - 2);
    if (lead & 0xFC00 != 0xD800) break;
    var category = high(lead, tail);
    if (category != categoryRegionalIndicator) break;
    index -= 2;
    count ^= 1;
  }
  if (count == 0) {
    return stateRegionalEven | stateNoBreak;
  } else {
    return stateRegionalOdd;
  }
}