UNPKG

mathjslab

Version:

MathJSLab - An interpreter with language syntax like MATLAB®/Octave, ISBN 978-65-00-82338-7.

33 lines (32 loc) 1.48 kB
/** * Minimal rendering surface required by runtime values. * * Runtime values should not depend on the concrete `Interpreter` class just to * render child values or inspect operator precedence. The interpreter implements * this interface, but tests and future renderers can provide smaller objects. */ type RuntimeDisplay = { /** Operator precedence table used when adding parentheses. */ precedenceTable: Record<string, number>; /** Render a runtime or AST value as source-like text. */ Unparse(value: unknown, parentPrecedence?: number): string; /** Render a runtime or AST value as MathML. */ UnparserMathML(value: unknown, parentPrecedence?: number): string; }; /** * Minimal evaluation surface required when runtime containers evaluate their * child expressions. */ type RuntimeEvaluationContext = RuntimeDisplay & { /** Evaluate a runtime/AST value inside an optional caller scope. */ Evaluator(value: unknown, scope?: unknown): unknown; /** Comma-list expansion hooks used when array literals evaluate elements. */ context: { pushCommaListExpansion(): void; popCommaListExpansion(): void; expandCommaSeparatedList(value: unknown): unknown[]; }; /** Optional class-aware concatenation hook used by array literals. */ concatenateOverload?(name: 'horzcat' | 'vertcat', values: unknown[], parent: unknown): unknown | undefined; }; export type { RuntimeDisplay, RuntimeEvaluationContext };