Pandoc Lua 过滤器 - pandoc.list 模块

这是一个定义 Pandoc 列表类型的模块。它包含了一些实用的方法和便利函数。

构造器 Constructor

pandoc.List([table])

创建一个新的列表。如果提供了可选参数 table,则设置该值的元表为 pandoc.List。这是 pandoc.List:new([table]) 的别名。

元方法 Metamethods

pandoc.List:__concat (list)

将两个列表连接在一起。

参数 描述
list 连接到第一个列表的第二个列表
  • 返回: 包含两个列表所有元素的新列表

pandoc.List:__eq (a, b)

比较两个列表是否相等。只有当两个列表具有相同的类型(即,具有相同的非空元表),长度相同,并且所有元素都相等时,才认为它们相等。

参数 描述
a, b 任何 Lua 对象
  • 返回:
    • true 如果两个列表相等,否则返回 false

方法 Methods

pandoc.List:clone ()

返回列表的一个(浅)拷贝。(要获得列表的深拷贝,请使用 walk 并附加一个空过滤器。)

pandoc.List:extend (list)

将给定的列表添加到当前列表的末尾。

参数 描述
list 要附加的列表

pandoc.List:find (needle, init)

返回给定项首次出现的值和索引。

参数 描述
needle 要搜索的项
init 开始搜索的索引
  • 返回: 第一个等于 needle 的项,如果没有这样的项,则返回 nil

pandoc.List:find_if (pred, init)

返回满足给定谓词的第一个元素的值和索引。

参数 描述
pred 谓词函数
init 开始搜索的索引
  • 返回: 第一个使 test 成功的项,如果没有这样的项,则返回 nil

pandoc.List:filter (pred)

返回一个新的列表,其中包含满足给定条件的所有项。

参数 描述
pred 项必须满足的条件
  • 返回: 一个新列表,其中包含所有使 test 为真的项

pandoc.List:includes (needle, init)

检查列表中是否有等于给定 needle 的项。

参数 描述
needle 要搜索的项
init 开始搜索的索引
  • 返回: 如果列表中的某个项等于 needle 则返回 true,否则返回 false

pandoc.List:insert ([pos], value)

在列表的指定位置 pos 插入元素 value,必要时将其他元素向后移动。

此函数与 table.insert 相同。

参数 描述
pos 新值的索引,默认为列表长度加一
value 要插入列表的值

pandoc.List:map (fn)

通过将给定函数应用于所有元素,返回当前列表的副本。

参数 描述
fn 应用于所有列表项的函数

pandoc.List:new ([table])

创建一个新的列表。如果提供了可选参数 table,则设置该值的元表为 pandoc.List

参数 描述
table 应被视为列表的表,默认为空表
  • 返回: 更新后的输入值

pandoc.List:remove ([pos])

删除位置 pos 处的元素,并返回被删除的值。

此函数与 table.remove 相同。

参数 描述
pos 将被删除的列表值的位置,默认为最后一个元素的索引
  • 返回: 被删除的元素

pandoc.List:sort ([comp])

根据给定顺序对列表元素进行排序。如果提供了 comp,那么它必须是一个接收两个列表元素并返回布尔值的函数,当第一个元素在最终顺序中应该排在第二个元素之前时返回 true(因此,排序后,如果 i < j,则意味着 not comp(list[j],list[i]))。如果未提供 comp,则使用标准的 Lua 操作符 <

注意

comp 函数必须在列表的元素上定义一个严格的偏序关系;也就是说,它必须是非对称的和传递的。否则,可能无法进行有效的排序。

排序算法不是稳定的:根据给定的顺序被认为相等的元素,它们之间的相对位置可能会因排序而发生变化。

此函数与 table.sort 完全相同。

参数 描述
comp 如上所述的比较函数
在本文档中