summaryrefslogtreecommitdiff
path: root/library/src
diff options
context:
space:
mode:
authorLaurenz <laurmaedje@gmail.com>2022-11-26 13:39:18 +0100
committerLaurenz <laurmaedje@gmail.com>2022-11-26 13:41:27 +0100
commit7af46fc025ee08eb78ae7f6898300083c886bf6f (patch)
tree5837d972961844650bc9668d8516d7b5239a8d18 /library/src
parent3cdd8bfa40fe5fdf0c676af905c3c2c1f614ef24 (diff)
Dynamic labels
Diffstat (limited to 'library/src')
-rw-r--r--library/src/base/string.rs6
-rw-r--r--library/src/lib.rs1
-rw-r--r--library/src/prelude.rs2
3 files changed, 8 insertions, 1 deletions
diff --git a/library/src/base/string.rs b/library/src/base/string.rs
index 262dd5c6..9c3b9562 100644
--- a/library/src/base/string.rs
+++ b/library/src/base/string.rs
@@ -14,11 +14,17 @@ pub fn str(_: &Vm, args: &mut Args) -> SourceResult<Value> {
Ok(Value::Str(match v {
Value::Int(v) => format_str!("{}", v),
Value::Float(v) => format_str!("{}", v),
+ Value::Label(label) => label.0.into(),
Value::Str(v) => v,
v => bail!(span, "cannot convert {} to string", v.type_name()),
}))
}
+/// Create a label from a string.
+pub fn label(_: &Vm, args: &mut Args) -> SourceResult<Value> {
+ Ok(Value::Label(Label(args.expect("string")?)))
+}
+
/// Create blind text.
pub fn lorem(_: &Vm, args: &mut Args) -> SourceResult<Value> {
let words: usize = args.expect("number of words")?;
diff --git a/library/src/lib.rs b/library/src/lib.rs
index dd527ed1..ea14c4c1 100644
--- a/library/src/lib.rs
+++ b/library/src/lib.rs
@@ -105,6 +105,7 @@ fn scope() -> Scope {
std.def_fn("cmyk", base::cmyk);
std.def_fn("repr", base::repr);
std.def_fn("str", base::str);
+ std.def_fn("label", base::label);
std.def_fn("regex", base::regex);
std.def_fn("letter", base::letter);
std.def_fn("roman", base::roman);
diff --git a/library/src/prelude.rs b/library/src/prelude.rs
index d2d82d3b..6379e579 100644
--- a/library/src/prelude.rs
+++ b/library/src/prelude.rs
@@ -16,7 +16,7 @@ pub use typst::geom::*;
#[doc(no_inline)]
pub use typst::model::{
array, capability, castable, dict, dynamic, format_str, node, Args, Array, Cast,
- Content, Dict, Finalize, Fold, Func, Node, NodeId, Resolve, Show, Smart, Str,
+ Content, Dict, Finalize, Fold, Func, Label, Node, NodeId, Resolve, Show, Smart, Str,
StyleChain, StyleMap, StyleVec, Unlabellable, Value, Vm,
};
#[doc(no_inline)]