diff options
| author | Laurenz <laurmaedje@gmail.com> | 2022-11-26 13:39:18 +0100 |
|---|---|---|
| committer | Laurenz <laurmaedje@gmail.com> | 2022-11-26 13:41:27 +0100 |
| commit | 7af46fc025ee08eb78ae7f6898300083c886bf6f (patch) | |
| tree | 5837d972961844650bc9668d8516d7b5239a8d18 /library | |
| parent | 3cdd8bfa40fe5fdf0c676af905c3c2c1f614ef24 (diff) | |
Dynamic labels
Diffstat (limited to 'library')
| -rw-r--r-- | library/src/base/string.rs | 6 | ||||
| -rw-r--r-- | library/src/lib.rs | 1 | ||||
| -rw-r--r-- | library/src/prelude.rs | 2 |
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)] |
