highlight method

List<List<ThemedToken>> highlight(
  1. String code, {
  2. required String language,
  3. required SyntaxTheme theme,
})

Styled tokens per line. Adjacent tokens with the same style are merged.

Implementation

List<List<ThemedToken>> highlight(
  String code, {
  required String language,
  required SyntaxTheme theme,
}) {
  final grammar = this.grammar(language);
  final result = <List<ThemedToken>>[];
  StateStack? state;
  for (final line in splitLines(code)) {
    final tokens = grammar.tokenizeLine(line, state);
    result.add(themeTokens(line, tokens.tokens, theme));
    state = tokens.endState;
  }
  return result;
}