normalizeLabel function

String normalizeLabel(
  1. String label
)

A label as CommonMark compares it: trimmed, inner whitespace collapsed to one space, and case-folded.

Implementation

String normalizeLabel(String label) {
  final trimmed = label.trim();
  final collapsed = trimmed.contains(_whitespaceToCollapse)
      ? trimmed.replaceAll(_whitespaceRun, ' ')
      : trimmed;
  final lower = collapsed.toLowerCase();
  // Unicode case folding, which lower case alone misses: `ẞ` lowers to `ß`,
  // and folds — like `SS` — to `ss`. Round-tripping through upper case gets
  // there. ASCII needs none of it.
  for (var i = 0; i < lower.length; i++) {
    if (lower.codeUnitAt(i) > 0x7F) {
      return lower.toUpperCase().toLowerCase().replaceAll('ß', 'ss');
    }
  }
  return lower;
}