extractPlainText static method
Extracts the plain text from the Markdown content
Implementation
static String extractPlainText(String markdown) {
String plain = markdown;
// Remove headers
plain = plain.replaceAll(RegExp(r'^#+\s*', multiLine: true), '');
plain = plain.replaceAll(RegExp(r'\*\*(.*?)\*\*'), r'\1');
plain = plain.replaceAll(RegExp(r'\*(.*?)\*'), r'\1');
plain = plain.replaceAll(RegExp(r'__(.*?)__'), r'\1');
plain = plain.replaceAll(RegExp(r'_(.*?)_'), r'\1');
// Remove inline code
plain = plain.replaceAll(RegExp(r'`(.*?)`'), r'\1');
// Remove links
plain = plain.replaceAll(RegExp(r'\[([^\]]+)\]\([^)]+\)'), r'\1');
// Remove images
plain = plain.replaceAll(RegExp(r'!\[([^\]]*)\]\([^)]+\)'), r'\1');
plain = plain.replaceAll(RegExp(r'```[\s\S]*?```'), '');
// Remove blockquotes
plain = plain.replaceAll(RegExp(r'^>\s*', multiLine: true), '');
// Remove horizontal rules
plain = plain.replaceAll(RegExp(r'^---+$', multiLine: true), '');
// Remove lists
plain = plain.replaceAll(RegExp(r'^[\s]*[-*+]\s*', multiLine: true), '');
plain = plain.replaceAll(RegExp(r'^[\s]*\d+\.\s*', multiLine: true), '');
// Collapse multiple spaces
plain = plain.replaceAll(RegExp(r'\n\s*\n'), '\n\n');
plain = plain.trim();
return plain;
}