A world-class math input for the web
1import {
2 CaretParser,
3 CaretNode,
4 CaretLeafParselet,
5 TokensTag,
6} from "@caret-js/core";
7import { RadicalToken } from "../tokens/radical";
8import { RadicalNode } from "../nodes/radical";
9
10export class RadicalParselet extends CaretLeafParselet {
11 parse(parser: CaretParser): CaretNode {
12 const token = parser.consume();
13 this.assert(token instanceof RadicalToken, "Expected RadicalToken");
14
15 const index = token.index ? parser.parseSubStrand(token.index) : null;
16 const radicand = parser.parseSubStrand(token.radicand);
17
18 return RadicalNode.from(radicand, index).addTag(new TokensTag([token]));
19 }
20}