summaryrefslogtreecommitdiff
path: root/src/library/text.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/library/text.rs')
-rw-r--r--src/library/text.rs17
1 files changed, 16 insertions, 1 deletions
diff --git a/src/library/text.rs b/src/library/text.rs
index bde2a9aa..cfd2de99 100644
--- a/src/library/text.rs
+++ b/src/library/text.rs
@@ -1,4 +1,4 @@
-use crate::eval::{FontState, LineState};
+use crate::eval::{Decoration, FontState, LineState};
use crate::layout::Paint;
use super::*;
@@ -197,3 +197,18 @@ fn line_impl(
Ok(Value::Template(template))
}
+
+/// `link`: Set a link.
+pub fn link(_: &mut EvalContext, args: &mut Arguments) -> TypResult<Value> {
+ let url = args.expect::<Str>("url")?;
+
+ let mut body = args.eat().unwrap_or_else(|| {
+ let mut template = Template::new();
+ template.text(&url);
+ template
+ });
+
+ body.decorate(Decoration::Link(url.into()));
+
+ Ok(Value::Template(body))
+}