diff options
| author | Albert Krewinkel <[email protected]> | 2024-09-21 08:54:05 +0200 |
|---|---|---|
| committer | Albert Krewinkel <[email protected]> | 2024-09-21 10:10:35 +0200 |
| commit | 05aa18420ff83ccdd03d9956b0ff65e659198826 (patch) | |
| tree | beaaf131ed5793d0522676ee6102aa43d2804d48 | |
| parent | 5ccf380dadec2a4b9323b2a2d2aa6efd8e7b0b03 (diff) | |
Lua: update List module
The module now comes with a method `:at(index[, def])` that allows to access
indices, accepts negative indices to count from the end, and will return the
`def` value as a default if the list has no item at the given position.
Furthermore, the list constructor `pandoc.List` now accepts iterators. E.g.,
`pandoc.List(text:gmatch '%S+')` returns the list of words in `text`.
Closes: #9835
| -rw-r--r-- | doc/lua-filters.md | 25 | ||||
| -rw-r--r-- | pandoc-lua-engine/pandoc-lua-engine.cabal | 2 | ||||
| -rw-r--r-- | stack.yaml | 1 |
3 files changed, 27 insertions, 1 deletions
diff --git a/doc/lua-filters.md b/doc/lua-filters.md index 9de10cfbf..f445f6327 100644 --- a/doc/lua-filters.md +++ b/doc/lua-filters.md @@ -4578,6 +4578,28 @@ Returns: ## Methods +### `pandoc.List:at` {#pandoc.list:at} + +`:at (index[, default])` + +Returns the element at the given index, or `default` if the list +contains no item at the given position. + +Negative integers count back from the last item in the list. + +Parameters: + +`index` +: element position (integer) + +`default` +: the default value that is returned if the index is out of + range (any) + +Returns: + +- the list item at `index`, or `default`. + ### `pandoc.List:clone ()` {#pandoc.list:clone} Returns a (shallow) copy of the list. (To get a deep copy @@ -4683,6 +4705,9 @@ Parameters: Create a new List. If the optional argument `table` is given, set the metatable of that value to `pandoc.List`. +The function also accepts an iterator, in which case it creates a +new list from the return values of the iterator function. + Parameters: `table` diff --git a/pandoc-lua-engine/pandoc-lua-engine.cabal b/pandoc-lua-engine/pandoc-lua-engine.cabal index 44461adf4..34a045bca 100644 --- a/pandoc-lua-engine/pandoc-lua-engine.cabal +++ b/pandoc-lua-engine/pandoc-lua-engine.cabal @@ -125,7 +125,7 @@ library , lpeg >= 1.1 && < 1.2 , mtl >= 2.2 && < 2.4 , pandoc >= 3.4 && < 3.5 - , pandoc-lua-marshal >= 0.2.7 && < 0.3 + , pandoc-lua-marshal >= 0.2.8 && < 0.3 , pandoc-types >= 1.22 && < 1.24 , parsec >= 3.1 && < 3.2 , text >= 1.1.1 && < 2.2 diff --git a/stack.yaml b/stack.yaml index 5b126f5be..69c90d348 100644 --- a/stack.yaml +++ b/stack.yaml @@ -22,6 +22,7 @@ extra-deps: - typst-0.6 # even though the resolver has this version, we need the Hackage revision: - hslua-module-doclayout-1.1.1.2 +- hslua-list-1.1.2 - git: https://github.com/jgm/commonmark-hs subdirs: [commonmark, commonmark-pandoc] commit: 7130ce27089b47588f64946263defc05fd72ab29 |
