getColorizedText method
Get text with colorized syntax highlighting
Implementation
String getColorizedText(
String text, String filePath, String fileExtension, String style) {
// Create map for color prefixes based on token types
Map<int, String> colorPrefixes = {
0: "", // None
1: "°", // ShortComment (gray)
2: "°", // LongComment (gray)
3: "²", // String (red)
4: "²", // Number (red)
5: "²", // Constant (red)
6: "²", // Type (red)
7: "¹", // Keyword (pink)
8: "²", // Pragma (red)
9: "", // LowerCaseIdentifier
10: "⁰", // UpperCaseIdentifier (orange)
11: "", // MinorCaseIdentifier
12: "", // MajorCaseIdentifier
13: "²", // Identifier (red)
14: "°", // Operator (gray)
15: "°", // Separator (gray)
16: "°", // Delimiter (gray)
17: "°", // Special (gray)
18: "", // Spacing
};
// Parse and tokenize code
List<CodeToken> codeTokens = _getCodeTokens(text, fileExtension);
// Apply color markers
String colorizedText = ":::$style\n";
for (int i = 0; i < codeTokens.length; i++) {
CodeToken token = codeTokens[i];
int tokenType = token.type.index;
// Add color prefix if needed
if (i == 0 ||
colorPrefixes[tokenType] !=
colorPrefixes[codeTokens[i - 1].type.index]) {
colorizedText += colorPrefixes[tokenType] ?? "";
}
// Add token text
colorizedText += token.text;
// Add color suffix if needed
if (i == codeTokens.length - 1 ||
colorPrefixes[tokenType] !=
colorPrefixes[codeTokens[i + 1].type.index]) {
colorizedText += colorPrefixes[tokenType] ?? "";
}
}
colorizedText += ":::\n";
return colorizedText;
}