markdownHighlightedCodeSpan function
Implementation
TextSpan markdownHighlightedCodeSpan(
String source, {
required String? language,
required TextStyle baseStyle,
}) {
final normalized = normalizeMarkdownCodeLanguage(language);
if (normalized == null ||
normalized == 'plaintext' ||
!markdownCodeCanHighlight(source) ||
_codeHighlighter.getLanguage(normalized) == null) {
return TextSpan(text: source, style: baseStyle);
}
final key = _HighlightCacheKey(language: normalized, source: source);
var result = _highlightCache.get(key);
if (result == null) {
try {
result = _codeHighlighter.highlight(code: source, language: normalized);
_highlightCache.put(key, result);
} on Object {
return TextSpan(text: source, style: baseStyle);
}
}
final renderer = TextSpanRenderer(baseStyle, githubTheme);
result.render(renderer);
return renderer.span ?? TextSpan(text: source, style: baseStyle);
}