pub enum TokenKind {
Keyword,
Function,
Type,
Number,
String,
Comment,
Variable,
Constant,
Operator,
}Expand description
A coarse token kind. The view layer maps each kind to a colour via
theme tokens. We deliberately flatten arborium’s capture-name
taxonomy (which has ~50 distinct strings like "keyword.function",
"string.special.symbol", …) into a small enum because:
- A Notion-style code block doesn’t need surgical precision. It needs to be readable at a glance.
- Mapping every arborium capture to its own CSS variable would
explode
devup.jsonwith dozens of colour slots that nobody tunes. - Colour themes in the wild (One Dark, Dracula, GitHub) group captures into ~8 slots anyway.
Variants§
Keyword
fn, let, if, return, language keywords.
Function
Function names at definition or call sites.
Type
Type names, struct names, trait names.
Number
42, 0xff, 3.14.
String
"hello", 'x', template literal bodies.
Comment
// line comments, /* block comments */.
Variable
User-facing identifiers that don’t fit another slot (variables, parameters).
Constant
Built-in constants like true, false, null, None.
Operator
+, =>, ::, punctuation that carries meaning.
Implementations§
Source§impl TokenKind
impl TokenKind
Sourcepub const fn as_str(self) -> &'static str
pub const fn as_str(self) -> &'static str
The string handed across the WASM boundary. Kept short and
lowercase so the TS side can use them as-is for CSS class
suffixes (syntax-keyword, syntax-string, …).
Sourcepub fn from_capture(capture: &str) -> Option<Self>
pub fn from_capture(capture: &str) -> Option<Self>
Map a raw arborium capture name (e.g. "keyword.function",
"string.special.symbol") to our coarse enum. Unknown
captures return None — the caller should skip them so we
don’t paint random tokens.
The matching is prefix-based ("keyword.function" →
Keyword) because arborium’s capture names are dotted
namespaces where the first segment is the most important.