markdownToPlainText function
Strips common GFM presentation markup, preserving content text.
Raw HTML stays literal; links keep their labels, images keep their alt text, and fenced code keeps its source text.
Implementation
String markdownToPlainText(String source) {
final lines = source.split('\n');
final out = <String>[];
var fenced = false;
for (final line in lines) {
final trimmed = line.trimLeft();
if (trimmed.startsWith('```') || trimmed.startsWith('~~~')) {
fenced = !fenced;
continue;
}
if (fenced) {
out.add(line);
continue;
}
out.add(_stripInline(_stripLinePrefix(line)));
}
return out.join('\n');
}