diff options
Diffstat (limited to 'src/eval')
| -rw-r--r-- | src/eval/library.rs | 6 | ||||
| -rw-r--r-- | src/eval/mod.rs | 4 |
2 files changed, 6 insertions, 4 deletions
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>) -> 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<Self::Output> { - 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)) } } |
