githubImageReferences function
Implementation
List<GithubImageReference> githubImageReferences(String input) {
final images = <GithubImageReference>[];
final seen = <String>{};
void add(String url, String alt) {
final normalized = _decodeHtml(url.trim());
if (!_isRenderableImageUrl(normalized) || !seen.add(normalized)) return;
images.add(
GithubImageReference(url: normalized, alt: _decodeHtml(alt.trim())),
);
}
for (final match in RegExp(
r'!\[([^\]]*)\]\(([^)\s]+)(?:\s+"[^"]*")?\)',
).allMatches(input)) {
add(match.group(2) ?? '', match.group(1) ?? 'image');
}
for (final match in RegExp(
r'<img\b[^>]*>',
caseSensitive: false,
).allMatches(input)) {
final tag = match.group(0) ?? '';
add(_htmlAttribute(tag, 'src'), _htmlAttribute(tag, 'alt'));
}
return images;
}