summaryrefslogtreecommitdiff
path: root/library/src/meta/reference.rs
diff options
context:
space:
mode:
authorLaurenz <laurmaedje@gmail.com>2023-03-07 15:17:13 +0100
committerLaurenz <laurmaedje@gmail.com>2023-03-07 15:17:13 +0100
commit25b5bd117529cd04bb789e1988eb3a3db8025a0e (patch)
tree2fbb4650903123da047a1f1f11a0abda95286e12 /library/src/meta/reference.rs
parent6ab7760822ccd24b4ef126d4737d41f1be15fe19 (diff)
Fully untyped model
Diffstat (limited to 'library/src/meta/reference.rs')
-rw-r--r--library/src/meta/reference.rs34
1 files changed, 9 insertions, 25 deletions
diff --git a/library/src/meta/reference.rs b/library/src/meta/reference.rs
index e64751f7..55051b5e 100644
--- a/library/src/meta/reference.rs
+++ b/library/src/meta/reference.rs
@@ -1,7 +1,6 @@
use crate::prelude::*;
use crate::text::TextNode;
-/// # Reference
/// A reference to a label.
///
/// *Note: This function is currently unimplemented.*
@@ -16,33 +15,18 @@ use crate::text::TextNode;
/// created by typing an `@` followed by the name of the label (e.g. `[=
/// Introduction <intro>]` can be referenced by typing `[@intro]`).
///
-/// ## Parameters
-/// - target: `Label` (positional, required)
-/// The label that should be referenced.
-///
-/// ## Category
-/// meta
-#[func]
-#[capable(Show)]
-#[derive(Debug, Hash)]
-pub struct RefNode(pub EcoString);
-
-#[node]
-impl RefNode {
- fn construct(_: &Vm, args: &mut Args) -> SourceResult<Content> {
- Ok(Self(args.expect("target")?).pack())
- }
-
- fn field(&self, name: &str) -> Option<Value> {
- match name {
- "target" => Some(Value::Str(self.0.clone().into())),
- _ => None,
- }
- }
+/// Display: Reference
+/// Category: meta
+#[node(Show)]
+pub struct RefNode {
+ /// The label that should be referenced.
+ #[positional]
+ #[required]
+ pub target: EcoString,
}
impl Show for RefNode {
fn show(&self, _: &mut Vt, _: &Content, _: StyleChain) -> SourceResult<Content> {
- Ok(TextNode::packed(eco_format!("@{}", self.0)))
+ Ok(TextNode::packed(eco_format!("@{}", self.target())))
}
}