findBreakOpportunities static method

List<(int, BreakOpportunity)> findBreakOpportunities(
  1. String text
)

Implementation

static List<(int, BreakOpportunity)> findBreakOpportunities(String text) {
  final List<(int, BreakOpportunity)> opportunities = [];

  for (int i = 0; i < text.length; i++) {
    final char = text[i];

    if (char == '\n') {
      opportunities.add((i, BreakOpportunity.mandatory));
      continue;
    }

    if (char == ' ') {
      opportunities.add((i, BreakOpportunity.allowed));
      continue;
    }

    if (_isPunctuation(char)) {
      opportunities.add((i, BreakOpportunity.preferred));
      continue;
    }

    if (i > 0 && !_isProhibitedBreak(text, i - 1, i) && i < text.length - 1) {
      opportunities.add((i, BreakOpportunity.emergency));
    }
  }

  opportunities.add((text.length - 1, BreakOpportunity.mandatory));

  return opportunities;
}