From 0ba99ab8aa523645e2f0a0d9f6333ad4e48f5daa Mon Sep 17 00:00:00 2001 From: Laurenz Date: Sun, 19 Mar 2023 10:19:24 +0100 Subject: Measurement and introspection rework --- library/src/lib.rs | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) (limited to 'library/src/lib.rs') diff --git a/library/src/lib.rs b/library/src/lib.rs index 14fea66d..2f951b92 100644 --- a/library/src/lib.rs +++ b/library/src/lib.rs @@ -74,6 +74,7 @@ fn global(math: Module, calc: Module) -> Module { global.define("scale", layout::ScaleNode::id()); global.define("rotate", layout::RotateNode::id()); global.define("hide", layout::HideNode::id()); + global.define("measure", layout::measure); // Visualize. global.define("image", visualize::ImageNode::id()); @@ -92,6 +93,8 @@ fn global(math: Module, calc: Module) -> Module { global.define("figure", meta::FigureNode::id()); global.define("cite", meta::CiteNode::id()); global.define("bibliography", meta::BibliographyNode::id()); + global.define("locate", meta::locate); + global.define("style", meta::style); global.define("counter", meta::counter); global.define("numbering", meta::numbering); global.define("state", meta::state); @@ -228,11 +231,11 @@ fn items() -> LangItems { math::AccentNode::new(base, math::Accent::new(accent)).pack() }, math_frac: |num, denom| math::FracNode::new(num, denom).pack(), - library_method: |dynamic, method, args, span| { - if let Some(counter) = dynamic.downcast().cloned() { - meta::counter_method(counter, method, args, span) - } else if let Some(state) = dynamic.downcast().cloned() { - meta::state_method(state, method, args, span) + library_method: |vm, dynamic, method, args, span| { + if let Some(counter) = dynamic.downcast::().cloned() { + counter.call_method(vm, method, args, span) + } else if let Some(state) = dynamic.downcast::().cloned() { + state.call_method(vm, method, args, span) } else { Err(format!("type {} has no method `{method}`", dynamic.type_name())) .at(span) -- cgit v1.2.3