import { CaretParser, CaretNode, CaretLeafParselet, TokensTag, } from "@caret-js/core"; import { RadicalToken } from "../tokens/radical"; import { RadicalNode } from "../nodes/radical"; export class RadicalParselet extends CaretLeafParselet { parse(parser: CaretParser): CaretNode { const token = parser.consume(); this.assert(token instanceof RadicalToken, "Expected RadicalToken"); const index = token.index ? parser.parseSubStrand(token.index) : null; const radicand = parser.parseSubStrand(token.radicand); return RadicalNode.from(radicand, index).addTag(new TokensTag([token])); } }