normalizeLabel function
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;
}