bracketPositionLeft function

Option<StrPos> bracketPositionLeft(
  1. String source,
  2. BracketType bracketType
)

Finds the brackets furthest to the left '(L) (R)' Returns a start and end position inp: bl(blim) (plumpy(stumpy)) out: 2, 7

Implementation

Option<StrPos> bracketPositionLeft(String source, BracketType bracketType) {
  var bracket = getBracket(bracketType);

  //remove bracket and space to the right
  var startIndex = source.indexOf(bracket.start) + 1; //

  //per char check for closing bracket
  var bracketCount = 1;
  for (var i = startIndex; i < source.length; i++) {
    if (source[i] == bracket.start) bracketCount++;
    if (source[i] == bracket.end) bracketCount--;

    if (bracketCount == 0) return some(StrPos(startIndex, i));
  }

  return none();
}