isHr function
Thematic break: 3+ of -, *, or _ (optionally space-separated), or ⸻.
Implementation
bool isHr(String trimmed) {
final start = firstNonSpace(trimmed);
if (start == -1) {
return false;
}
final lead = trimmed.codeUnitAt(start);
if (lead != 0x2D /* - */ &&
lead != 0x2A /* * */ &&
lead != 0x5F /* _ */ &&
lead != 0x2E3B /* ⸻ */ ) {
return false;
}
final t = trimmed.trim();
if (t == '⸻') {
return true;
}
if (t.isEmpty) {
return false;
}
final first = t[0];
if (first != '-' && first != '*' && first != '_') {
return false;
}
var count = 0;
for (var i = 0; i < t.length; i++) {
final c = t[i];
if (c == first) {
count += 1;
} else if (c == ' ') {
continue;
} else {
return false;
}
}
return count >= 3;
}