summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLaurenz <laurmaedje@gmail.com>2023-03-17 14:39:30 +0100
committerLaurenz <laurmaedje@gmail.com>2023-03-17 16:04:12 +0100
commitc47e4cb4969836e7fb8955361728105555b6d722 (patch)
tree08b613938b7bc7b82ae358aa8f117af11c1db6a8 /src
parent312197b276748e1a17258ad21837850f582a467c (diff)
State
Diffstat (limited to 'src')
-rw-r--r--src/eval/library.rs5
-rw-r--r--src/eval/methods.rs7
-rw-r--r--src/model/content.rs7
3 files changed, 5 insertions, 14 deletions
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)],
_ => &[],
}
}
diff --git a/src/model/content.rs b/src/model/content.rs
index 11ad635f..bd24829d 100644
--- a/src/model/content.rs
+++ b/src/model/content.rs
@@ -40,12 +40,7 @@ enum Modifier {
impl Content {
/// Create a content of the given node kind.
- pub fn new<T: Node>() -> Self {
- Self::new_of(T::id())
- }
-
- /// Create a content of the given node kind.
- pub fn new_of(id: NodeId) -> Self {
+ pub fn new(id: NodeId) -> Self {
Self {
id,
span: Span::detached(),