katex
Version:
Fast math typesetting for the web.
34 lines (30 loc) • 951 B
text/typescript
/**
* Small module for atom-group constants and type guard. Kept separate from
* `symbols.ts` so that consumers (notably `contrib/render-a11y-string`) can
* pull in `isAtom` without dragging in the ~870-line symbol tables.
*/
// Some of these have a "-token" suffix since these are also used as `ParseNode`
// types for raw text tokens, and we want to avoid conflicts with higher-level
// `ParseNode` types. These `ParseNode`s are constructed within `Parser` by
// looking up the `symbols` map.
export const ATOMS = {
"bin": 1,
"close": 1,
"inner": 1,
"open": 1,
"punct": 1,
"rel": 1,
};
export const NON_ATOMS = {
"accent-token": 1,
"mathord": 1,
"op-token": 1,
"spacing": 1,
"textord": 1,
};
export type Atom = keyof typeof ATOMS;
export type NonAtom = keyof typeof NON_ATOMS;
export type Group = Atom | NonAtom;
export function isAtom(value: string): value is Atom {
return value in ATOMS;
}