1
+ // List of all the tokens that pygments can emit for syntax highlighting
2
+ // https://github.com/pygments/pygments/blob/d0acfff1121f9ee3696b01a9077ebe9990216634/pygments/token.py#L123-L214
3
+ //
4
+ // Note: If you update this list make sure to update the permalink
5
+ // and the `tryFromString` function below.
6
+ enum CodeBlockSpanType {
7
+ /// A code-block span that is unrecognized by the parser.
8
+ unknown,
9
+ /// A run of unstyled text in a code block.
10
+ text,
11
+ /// A code-block span with CSS class `hll` .
12
+ ///
13
+ /// Unlike most `CodeBlockSpanToken` values, this does not correspond to
14
+ /// a Pygments "token type". See discussion:
15
+ /// https://github.com/zulip/zulip-flutter/pull/242#issuecomment-1652450667
16
+ highlightedLines,
17
+ /// A code-block span with CSS class `w` .
18
+ whitespace,
19
+ /// A code-block span with CSS class `esc` .
20
+ escape,
21
+ /// A code-block span with CSS class `err` .
22
+ error,
23
+ /// A code-block span with CSS class `x` .
24
+ other,
25
+ /// A code-block span with CSS class `k` .
26
+ keyword,
27
+ /// A code-block span with CSS class `kc` .
28
+ keywordConstant,
29
+ /// A code-block span with CSS class `kd` .
30
+ keywordDeclaration,
31
+ /// A code-block span with CSS class `kn` .
32
+ keywordNamespace,
33
+ /// A code-block span with CSS class `kp` .
34
+ keywordPseudo,
35
+ /// A code-block span with CSS class `kr` .
36
+ keywordReserved,
37
+ /// A code-block span with CSS class `kt` .
38
+ keywordType,
39
+ /// A code-block span with CSS class `n` .
40
+ name,
41
+ /// A code-block span with CSS class `na` .
42
+ nameAttribute,
43
+ /// A code-block span with CSS class `nb` .
44
+ nameBuiltin,
45
+ /// A code-block span with CSS class `bp` .
46
+ nameBuiltinPseudo,
47
+ /// A code-block span with CSS class `nc` .
48
+ nameClass,
49
+ /// A code-block span with CSS class `no` .
50
+ nameConstant,
51
+ /// A code-block span with CSS class `nd` .
52
+ nameDecorator,
53
+ /// A code-block span with CSS class `ni` .
54
+ nameEntity,
55
+ /// A code-block span with CSS class `ne` .
56
+ nameException,
57
+ /// A code-block span with CSS class `nf` .
58
+ nameFunction,
59
+ /// A code-block span with CSS class `fm` .
60
+ nameFunctionMagic,
61
+ /// A code-block span with CSS class `py` .
62
+ nameProperty,
63
+ /// A code-block span with CSS class `nl` .
64
+ nameLabel,
65
+ /// A code-block span with CSS class `nn` .
66
+ nameNamespace,
67
+ /// A code-block span with CSS class `nx` .
68
+ nameOther,
69
+ /// A code-block span with CSS class `nt` .
70
+ nameTag,
71
+ /// A code-block span with CSS class `nv` .
72
+ nameVariable,
73
+ /// A code-block span with CSS class `vc` .
74
+ nameVariableClass,
75
+ /// A code-block span with CSS class `vg` .
76
+ nameVariableGlobal,
77
+ /// A code-block span with CSS class `vi` .
78
+ nameVariableInstance,
79
+ /// A code-block span with CSS class `vm` .
80
+ nameVariableMagic,
81
+ /// A code-block span with CSS class `l` .
82
+ literal,
83
+ /// A code-block span with CSS class `ld` .
84
+ literalDate,
85
+ /// A code-block span with CSS class `s` .
86
+ string,
87
+ /// A code-block span with CSS class `sa` .
88
+ stringAffix,
89
+ /// A code-block span with CSS class `sb` .
90
+ stringBacktick,
91
+ /// A code-block span with CSS class `sc` .
92
+ stringChar,
93
+ /// A code-block span with CSS class `dl` .
94
+ stringDelimiter,
95
+ /// A code-block span with CSS class `sd` .
96
+ stringDoc,
97
+ /// A code-block span with CSS class `s2` .
98
+ stringDouble,
99
+ /// A code-block span with CSS class `se` .
100
+ stringEscape,
101
+ /// A code-block span with CSS class `sh` .
102
+ stringHeredoc,
103
+ /// A code-block span with CSS class `si` .
104
+ stringInterpol,
105
+ /// A code-block span with CSS class `sx` .
106
+ stringOther,
107
+ /// A code-block span with CSS class `sr` .
108
+ stringRegex,
109
+ /// A code-block span with CSS class `s1` .
110
+ stringSingle,
111
+ /// A code-block span with CSS class `ss` .
112
+ stringSymbol,
113
+ /// A code-block span with CSS class `m` .
114
+ number,
115
+ /// A code-block span with CSS class `mb` .
116
+ numberBin,
117
+ /// A code-block span with CSS class `mf` .
118
+ numberFloat,
119
+ /// A code-block span with CSS class `mh` .
120
+ numberHex,
121
+ /// A code-block span with CSS class `mi` .
122
+ numberInteger,
123
+ /// A code-block span with CSS class `il` .
124
+ numberIntegerLong,
125
+ /// A code-block span with CSS class `mo` .
126
+ numberOct,
127
+ /// A code-block span with CSS class `o` .
128
+ operator ,
129
+ /// A code-block span with CSS class `ow` .
130
+ operatorWord,
131
+ /// A code-block span with CSS class `p` .
132
+ punctuation,
133
+ /// A code-block span with CSS class `pm` .
134
+ punctuationMarker,
135
+ /// A code-block span with CSS class `c` .
136
+ comment,
137
+ /// A code-block span with CSS class `ch` .
138
+ commentHashbang,
139
+ /// A code-block span with CSS class `cm` .
140
+ commentMultiline,
141
+ /// A code-block span with CSS class `cp` .
142
+ commentPreproc,
143
+ /// A code-block span with CSS class `cpf` .
144
+ commentPreprocFile,
145
+ /// A code-block span with CSS class `c1` .
146
+ commentSingle,
147
+ /// A code-block span with CSS class `cs` .
148
+ commentSpecial,
149
+ /// A code-block span with CSS class `g` .
150
+ generic,
151
+ /// A code-block span with CSS class `gd` .
152
+ genericDeleted,
153
+ /// A code-block span with CSS class `ge` .
154
+ genericEmph,
155
+ /// A code-block span with CSS class `gr` .
156
+ genericError,
157
+ /// A code-block span with CSS class `gh` .
158
+ genericHeading,
159
+ /// A code-block span with CSS class `gi` .
160
+ genericInserted,
161
+ /// A code-block span with CSS class `go` .
162
+ genericOutput,
163
+ /// A code-block span with CSS class `gp` .
164
+ genericPrompt,
165
+ /// A code-block span with CSS class `gs` .
166
+ genericStrong,
167
+ /// A code-block span with CSS class `gu` .
168
+ genericSubheading,
169
+ /// A code-block span with CSS class `ges` .
170
+ genericEmphStrong,
171
+ /// A code-block span with CSS class `gt` .
172
+ genericTraceback,
173
+ }
174
+
175
+ CodeBlockSpanType codeBlockSpanTypeFromClassName (String className) {
176
+ return switch (className) {
177
+ '' => CodeBlockSpanType .text,
178
+ 'hll' => CodeBlockSpanType .highlightedLines,
179
+ 'w' => CodeBlockSpanType .whitespace,
180
+ 'esc' => CodeBlockSpanType .escape,
181
+ 'err' => CodeBlockSpanType .error,
182
+ 'x' => CodeBlockSpanType .other,
183
+ 'k' => CodeBlockSpanType .keyword,
184
+ 'kc' => CodeBlockSpanType .keywordConstant,
185
+ 'kd' => CodeBlockSpanType .keywordDeclaration,
186
+ 'kn' => CodeBlockSpanType .keywordNamespace,
187
+ 'kp' => CodeBlockSpanType .keywordPseudo,
188
+ 'kr' => CodeBlockSpanType .keywordReserved,
189
+ 'kt' => CodeBlockSpanType .keywordType,
190
+ 'n' => CodeBlockSpanType .name,
191
+ 'na' => CodeBlockSpanType .nameAttribute,
192
+ 'nb' => CodeBlockSpanType .nameBuiltin,
193
+ 'bp' => CodeBlockSpanType .nameBuiltinPseudo,
194
+ 'nc' => CodeBlockSpanType .nameClass,
195
+ 'no' => CodeBlockSpanType .nameConstant,
196
+ 'nd' => CodeBlockSpanType .nameDecorator,
197
+ 'ni' => CodeBlockSpanType .nameEntity,
198
+ 'ne' => CodeBlockSpanType .nameException,
199
+ 'nf' => CodeBlockSpanType .nameFunction,
200
+ 'fm' => CodeBlockSpanType .nameFunctionMagic,
201
+ 'py' => CodeBlockSpanType .nameProperty,
202
+ 'nl' => CodeBlockSpanType .nameLabel,
203
+ 'nn' => CodeBlockSpanType .nameNamespace,
204
+ 'nx' => CodeBlockSpanType .nameOther,
205
+ 'nt' => CodeBlockSpanType .nameTag,
206
+ 'nv' => CodeBlockSpanType .nameVariable,
207
+ 'vc' => CodeBlockSpanType .nameVariableClass,
208
+ 'vg' => CodeBlockSpanType .nameVariableGlobal,
209
+ 'vi' => CodeBlockSpanType .nameVariableInstance,
210
+ 'vm' => CodeBlockSpanType .nameVariableMagic,
211
+ 'l' => CodeBlockSpanType .literal,
212
+ 'ld' => CodeBlockSpanType .literalDate,
213
+ 's' => CodeBlockSpanType .string,
214
+ 'sa' => CodeBlockSpanType .stringAffix,
215
+ 'sb' => CodeBlockSpanType .stringBacktick,
216
+ 'sc' => CodeBlockSpanType .stringChar,
217
+ 'dl' => CodeBlockSpanType .stringDelimiter,
218
+ 'sd' => CodeBlockSpanType .stringDoc,
219
+ 's2' => CodeBlockSpanType .stringDouble,
220
+ 'se' => CodeBlockSpanType .stringEscape,
221
+ 'sh' => CodeBlockSpanType .stringHeredoc,
222
+ 'si' => CodeBlockSpanType .stringInterpol,
223
+ 'sx' => CodeBlockSpanType .stringOther,
224
+ 'sr' => CodeBlockSpanType .stringRegex,
225
+ 's1' => CodeBlockSpanType .stringSingle,
226
+ 'ss' => CodeBlockSpanType .stringSymbol,
227
+ 'm' => CodeBlockSpanType .number,
228
+ 'mb' => CodeBlockSpanType .numberBin,
229
+ 'mf' => CodeBlockSpanType .numberFloat,
230
+ 'mh' => CodeBlockSpanType .numberHex,
231
+ 'mi' => CodeBlockSpanType .numberInteger,
232
+ 'il' => CodeBlockSpanType .numberIntegerLong,
233
+ 'mo' => CodeBlockSpanType .numberOct,
234
+ 'o' => CodeBlockSpanType .operator ,
235
+ 'ow' => CodeBlockSpanType .operatorWord,
236
+ 'p' => CodeBlockSpanType .punctuation,
237
+ 'pm' => CodeBlockSpanType .punctuationMarker,
238
+ 'c' => CodeBlockSpanType .comment,
239
+ 'ch' => CodeBlockSpanType .commentHashbang,
240
+ 'cm' => CodeBlockSpanType .commentMultiline,
241
+ 'cp' => CodeBlockSpanType .commentPreproc,
242
+ 'cpf' => CodeBlockSpanType .commentPreprocFile,
243
+ 'c1' => CodeBlockSpanType .commentSingle,
244
+ 'cs' => CodeBlockSpanType .commentSpecial,
245
+ 'g' => CodeBlockSpanType .generic,
246
+ 'gd' => CodeBlockSpanType .genericDeleted,
247
+ 'ge' => CodeBlockSpanType .genericEmph,
248
+ 'gr' => CodeBlockSpanType .genericError,
249
+ 'gh' => CodeBlockSpanType .genericHeading,
250
+ 'gi' => CodeBlockSpanType .genericInserted,
251
+ 'go' => CodeBlockSpanType .genericOutput,
252
+ 'gp' => CodeBlockSpanType .genericPrompt,
253
+ 'gs' => CodeBlockSpanType .genericStrong,
254
+ 'gu' => CodeBlockSpanType .genericSubheading,
255
+ 'ges' => CodeBlockSpanType .genericEmphStrong,
256
+ 'gt' => CodeBlockSpanType .genericTraceback,
257
+ _ => CodeBlockSpanType .unknown,
258
+ };
259
+ }
0 commit comments