From c47e4cb4969836e7fb8955361728105555b6d722 Mon Sep 17 00:00:00 2001 From: Laurenz Date: Fri, 17 Mar 2023 14:39:30 +0100 Subject: State --- src/eval/library.rs | 5 ++--- src/eval/methods.rs | 7 ++----- 2 files changed, 4 insertions(+), 8 deletions(-) (limited to 'src/eval') diff --git a/src/eval/library.rs b/src/eval/library.rs index 45c23d17..0e0b38aa 100644 --- a/src/eval/library.rs +++ b/src/eval/library.rs @@ -90,9 +90,8 @@ pub struct LangItems { pub math_accent: fn(base: Content, accent: char) -> Content, /// A fraction in a formula: `x/2`. pub math_frac: fn(num: Content, denom: Content) -> Content, - /// Dispatch a method on a counter. This is hacky and should be superseded - /// by more dynamic method dispatch. - pub counter_method: fn( + /// Dispatch a method on a library value. + pub library_method: fn( dynamic: &Dynamic, method: &str, args: Args, diff --git a/src/eval/methods.rs b/src/eval/methods.rs index a449ac16..036f7ba2 100644 --- a/src/eval/methods.rs +++ b/src/eval/methods.rs @@ -135,11 +135,7 @@ pub fn call( }, Value::Dyn(dynamic) => { - if dynamic.type_name() == "counter" { - return (vm.items.counter_method)(&dynamic, method, args, span); - } - - return missing(); + return (vm.items.library_method)(&dynamic, method, args, span); } _ => return missing(), @@ -296,6 +292,7 @@ pub fn methods_on(type_name: &str) -> &[(&'static str, bool)] { ("step", true), ("update", true), ], + "state" => &[("get", true), ("final", true), ("update", true)], _ => &[], } } -- cgit v1.2.3