filter - Pandoc 使用 Lua 过滤器将字符串替换为表格
问题描述
在我的文档中,我有一个占位符字符串,例如:
{{changelog}}
并且想使用 Lua 过滤器将其替换为 Markdown 格式的表格,如果我使用 HTML,则以下 Lua 过滤器有效:
local string = [[
| some | table |
|------|-------|
| val1 | val2 |
]]
string = [[
<table>
<tr>
<td>some</td>
<td>table</td>
</tr>
<tr>
<td>val1</td>
<td>val2</td>
</tr>
</table>
]]
function Para(elem)
if elem.content[1].text == "{{changelog}}" then
return pandoc.RawBlock('html', string)
else
return elem
end
end
return {{ Para = Para }}
现在这可以使用 variable 的 HTML 内容,string
但是我如何让它与 variable 中的 Markdown 格式的内容一起使用string
。
解决方案
要返回任意格式而不是 HTML,我们必须指示 pandoc 解析字符串pandoc.read
:
function Para(elem)
if elem.content[1].text == "{{changelog}}" then
return pandoc.read(tblstring, 'html').blocks
end
end
该pandoc.read
函数接受一个字符串并将其解析为 pandoc 文档,其中第二个参数是格式;我们需要使用访问文档blocks
,因为我们对元数据不感兴趣。
我省略了return elem
, 因为如果函数不返回值,pandoc 会保留原始元素。
pandoc.Table
另一种方法是使用or之类的函数来构造表pandoc.utils.from_simple_table
,但这通常需要更多的工作。
另请注意,它string
是用于 Lua 的字符串库的全局名称,因此最好为表格 HTML 选择不同的名称。
推荐阅读
- sorting - 按日期排序对象 = T.get_date() 混淆
- java - 如何反序列化 JSON ?无法从 START_ARRAY 令牌中反序列化“RegionResponse”实例
- metpy - 示例中的 mpcalc.advection dim_order 和缺失值
- reactjs - 无法从 react-native-dropdown-picker 中选择项目
- tomcat8 - Tenable 显示将 tomcat 升级到 8.5.60 的漏洞,尽管升级已在存档服务器中完成
- express - 如何不在 Node.js 中保存相同的电子邮件用户?
- c# - 模型类属性字符串长度为 nvarchar max
- oracle - oracle 中的 ORA-00955 错误,我要更改什么来解决此问题
- socket.io - 使用 socket.io 时如何获取房间内的客户端数量?
- java - Flink集群写入mysql数据丢失