extractDescription static method

String? extractDescription(
  1. String html
)

Extract meta description

Implementation

static String? extractDescription(String html) {
  final strategies = [
    // Open Graph description
    r'<meta[^>]*property=[\"\x27]og:description[\"\x27][^>]*content=[\"\x27]([^\"\x27]*)[\"\x27]',
    // Meta description
    r'<meta[^>]*name=[\"\x27]description[\"\x27][^>]*content=[\"\x27]([^\"\x27]*)[\"\x27]',
    // Twitter description
    r'<meta[^>]*name=[\"\x27]twitter:description[\"\x27][^>]*content=[\"\x27]([^\"\x27]*)[\"\x27]',
    // First paragraph
    r'<p[^>]*>([^<]{50,200})</p>',
  ];

  for (final pattern in strategies) {
    final match = RegExp(pattern, caseSensitive: false).firstMatch(html);
    if (match != null) {
      final desc = _cleanText(match.group(1) ?? '');
      if (desc.length > 20) return desc;
    }
  }
  return null;
}