6 个版本 (破坏性更新)
0.6.0 | 2023 年 6 月 29 日 |
---|---|
0.5.0 | 2023 年 1 月 30 日 |
0.4.0 | 2022 年 12 月 21 日 |
0.3.0 | 2022 年 12 月 21 日 |
0.1.0 | 2022 年 7 月 8 日 |
#1114 in 文本处理
每月 74 次下载
26KB
222 行
mdbook-cmdrun
这是一个针对 rust-lang mdBook 项目的预处理器。这允许运行任意(shell)命令,并在 Markdown 文件中包含这些命令的输出。
入门指南
cargo install mdbook-cmdrun
您还需要激活预处理器,在您的 book.toml
文件中添加以下内容
[preprocessor.cmdrun]
如何使用
假设我们有两个文件
Markdown 文件:file.md
# Title
<!-- cmdrun seq 1 10 -->
<!-- cmdrun python3 script.py -->
Python 文件:script.py
def main():
print("## Generated subtitle")
print(" This comes from the script.py file")
print(" Since I'm in a scripting language,")
print(" I can compute whatever I want")
if __name__ == "__main__":
main()
预处理器将调用 seq,然后调用 python3,并生成结果文件
# Title
1
2
3
4
5
6
7
8
9
10
## Generated subtitle
This comes from the script.py file
Since I'm in a scripting language,
I can compute whatever I want
详细信息
当遇到模式 <!-- cmdrun $1 -->\n
或 <!-- cmdrun $1 -->
时,命令 $1
将使用 shell sh
以以下方式运行: sh -c $1
。工作目录是模式所在的目录(不是根目录)。被调用的命令必须不接收输入(不使用 stdin),但必须以命令行参数列表的形式提供输入,并必须在 stdout 中产生输出,stderr 被忽略。
截至 2023 年 7 月,mdbook-cmdrun 在 Windows 平台上使用 cmd
shell 运行!
示例
以下内容是有效的
<!-- cmdrun python3 generate_table.py -->
```rust
<!-- cmdrun cat program.rs -->
```
```diff
<!-- cmdrun diff a.rs b.rs -->
```
```console
<!-- cmdrun ls -l . -->
```
## Example of inline use inside a table
````markdown
Item | Price | # In stock
---|---|---
Juicy Apples | <!-- cmdrun node price.mjs apples --> | *<!-- cmdrun node quantity.mjs apples -->*
Bananas | *<!-- cmdrun node price.mjs bananas -->* | <!-- cmdrun node quantity.mjs bananas -->
渲染为以下内容
Item | Price | # In stock
---|---|---
Juicy Apples | 1.99 | *7*
Bananas | *1.89* | 5234
还实现了更多示例,并用作回归测试。您可以在 这里 找到它们。在撰写本文时,有使用以下内容的示例
- Shell
- Bash 脚本
- 批量脚本
- Python3
- Node
- Rust
贡献者
我要感谢 @exsjabe 对集成Windows支持和行内cmdrun调用的宝贵帮助。
当前版本:0.6.0
许可证:MIT
依赖项
~11–22MB
~319K SLoC