From 2a86e4db0bb3894d1cc3b94e1a1af31a6cd87b80 Mon Sep 17 00:00:00 2001 From: Laurenz Date: Tue, 14 Mar 2023 22:33:22 +0100 Subject: Reference supplements --- src/eval/library.rs | 6 +++--- src/eval/mod.rs | 4 +++- 2 files changed, 6 insertions(+), 4 deletions(-) (limited to 'src/eval') diff --git a/src/eval/library.rs b/src/eval/library.rs index 14f02d98..d3f7547d 100644 --- a/src/eval/library.rs +++ b/src/eval/library.rs @@ -59,8 +59,8 @@ pub struct LangItems { pub raw_languages: fn() -> Vec<(&'static str, Vec<&'static str>)>, /// A hyperlink: `https://typst.org`. pub link: fn(url: EcoString) -> Content, - /// A reference: `@target`. - pub ref_: fn(target: Label) -> Content, + /// A reference: `@target`, `@target[..]`. + pub reference: fn(target: Label, supplement: Option) -> Content, /// A section heading: `= Introduction`. pub heading: fn(level: NonZeroUsize, body: Content) -> Content, /// An item in a bullet list: `- ...`. @@ -106,7 +106,7 @@ impl Hash for LangItems { self.emph.hash(state); self.raw.hash(state); self.link.hash(state); - self.ref_.hash(state); + self.reference.hash(state); self.heading.hash(state); self.list_item.hash(state); self.enum_item.hash(state); diff --git a/src/eval/mod.rs b/src/eval/mod.rs index ae5f668a..127c930f 100644 --- a/src/eval/mod.rs +++ b/src/eval/mod.rs @@ -567,7 +567,9 @@ impl Eval for ast::Ref { type Output = Content; fn eval(&self, vm: &mut Vm) -> SourceResult { - Ok((vm.items.ref_)(Label(self.get().into()))) + let label = Label(self.target().into()); + let supplement = self.supplement().map(|block| block.eval(vm)).transpose()?; + Ok((vm.items.reference)(label, supplement)) } } -- cgit v1.2.3