summaryrefslogtreecommitdiff
path: root/src/eval/mod.rs
diff options
context:
space:
mode:
authorMarmare314 <49279081+Marmare314@users.noreply.github.com>2023-05-03 11:16:38 +0200
committerGitHub <noreply@github.com>2023-05-03 11:16:38 +0200
commitedc0632d8c9d7a17cc795a57de27c6b22a748158 (patch)
treea1c6e412512bed7b56c7c100b8affeac7e29f389 /src/eval/mod.rs
parent2772e6436c8a010662820c3e545e69ab922f133a (diff)
Add shorthand for root operation (#929)
Diffstat (limited to 'src/eval/mod.rs')
-rw-r--r--src/eval/mod.rs11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/eval/mod.rs b/src/eval/mod.rs
index 2719c298..fe1fac3b 100644
--- a/src/eval/mod.rs
+++ b/src/eval/mod.rs
@@ -438,6 +438,7 @@ impl Eval for ast::Expr {
Self::MathDelimited(v) => v.eval(vm).map(Value::Content),
Self::MathAttach(v) => v.eval(vm).map(Value::Content),
Self::MathFrac(v) => v.eval(vm).map(Value::Content),
+ Self::MathRoot(v) => v.eval(vm).map(Value::Content),
Self::Ident(v) => v.eval(vm),
Self::None(v) => v.eval(vm),
Self::Auto(v) => v.eval(vm),
@@ -726,6 +727,16 @@ impl Eval for ast::MathFrac {
}
}
+impl Eval for ast::MathRoot {
+ type Output = Content;
+
+ fn eval(&self, vm: &mut Vm) -> SourceResult<Self::Output> {
+ let index = self.index().map(|i| (vm.items.text)(eco_format!("{i}")));
+ let radicand = self.radicand().eval_display(vm)?;
+ Ok((vm.items.math_root)(index, radicand))
+ }
+}
+
impl Eval for ast::Ident {
type Output = Value;