diff options
| author | +merlan #flirora <flirora@flirora.xyz> | 2025-03-31 05:06:18 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-03-31 09:06:18 +0000 |
| commit | a64af130dc84c84442d59f322b705bded28201de (patch) | |
| tree | 5a27cc17b861cca3d0f06b9edf3de432701ada2a /crates/typst-library/src/foundations | |
| parent | 1082181a6f789b73fbc64c4ff5bc1401ad081e76 (diff) | |
Add default parameter for array.{first, last} (#5970)
Diffstat (limited to 'crates/typst-library/src/foundations')
| -rw-r--r-- | crates/typst-library/src/foundations/array.rs | 24 |
1 files changed, 18 insertions, 6 deletions
diff --git a/crates/typst-library/src/foundations/array.rs b/crates/typst-library/src/foundations/array.rs index e81b9e64..b647473a 100644 --- a/crates/typst-library/src/foundations/array.rs +++ b/crates/typst-library/src/foundations/array.rs @@ -172,17 +172,29 @@ impl Array { } /// Returns the first item in the array. May be used on the left-hand side - /// of an assignment. Fails with an error if the array is empty. + /// an assignment. Returns the default value if the array is empty + /// or fails with an error is no default value was specified. #[func] - pub fn first(&self) -> StrResult<Value> { - self.0.first().cloned().ok_or_else(array_is_empty) + pub fn first( + &self, + /// A default value to return if the array is empty. + #[named] + default: Option<Value>, + ) -> StrResult<Value> { + self.0.first().cloned().or(default).ok_or_else(array_is_empty) } /// Returns the last item in the array. May be used on the left-hand side of - /// an assignment. Fails with an error if the array is empty. + /// an assignment. Returns the default value if the array is empty + /// or fails with an error is no default value was specified. #[func] - pub fn last(&self) -> StrResult<Value> { - self.0.last().cloned().ok_or_else(array_is_empty) + pub fn last( + &self, + /// A default value to return if the array is empty. + #[named] + default: Option<Value>, + ) -> StrResult<Value> { + self.0.last().cloned().or(default).ok_or_else(array_is_empty) } /// Returns the item at the specified index in the array. May be used on the |
