markdownToPlainText function

String markdownToPlainText(
  1. String source
)

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');
}