#markdown #directory #snippets #full #file #document #language

app glu

将包含代码片段的Markdown文档解压到临时目录中

8个版本 (4个重大更新)

0.7.26 2024年7月26日
0.7.9 2024年7月9日
0.6.25 2024年6月25日
0.3.0 2024年6月17日
0.1.2 2024年6月16日

92文本处理 中排名

Download history 293/week @ 2024-06-11 145/week @ 2024-06-18 112/week @ 2024-06-25 54/week @ 2024-07-02 198/week @ 2024-07-09 1/week @ 2024-07-16 113/week @ 2024-07-23 20/week @ 2024-07-30

每月下载 135次

GPL-3.0-only

35KB
705

GLU - 将Markdown文件分解到目录中

有时你会在网上遇到一篇包含大量有用示例的文章,或者你正在尝试 编写 这样一篇文章,而且不希望它充满错误,那么让这篇文章成为可以从中构建整个文件目录的“上游真相源”将会非常不错。

这正是GLU的作用所在。你给它一个Markdown文件,它就会根据Markdown文件构建一个临时目录。当GLU进程退出时,这个目录会被清理。在此期间,你可以检查一切是否正常,运行任何你想要的命令等。

它是如何工作的?

GLU会查找代码块,就像这样

// hello.js

console.log("Hello, world!");

你会注意到我指定了代码块的语言(使用GitHub语法)和在代码块内注释中指定的文件名。不同的语言有不同的注释语法,这就是为什么提供语言和文件名注释都很重要的原因。给出了这两者,GLU就能确定你的文件应该解压到哪个位置。

如果GLU足够智能,无法确定正确的文件名,它当前默认为 filename.txt,如果多个代码块都与 filename.txt 关联,则该文件将被反复覆盖。

最后,GLU会对你的代码块进行一些清理,以删除文件名注释、空尾行和首行以及过多的空白。其中一些功能最终可能可配置。但对于那个 hello.js 示例,你会找到一个只包含 console.log 行的文件。

我该如何运行这个?

# examples.sh

# Install glu via cargo, if you don't have it
# You can find a Rust+Cargo installer at https://rustup.rs/
cargo install glu

# Unpack files to a temp directory and open a bash shell.
# Files will be deleted when shell is closed.
glu path/to/markdown/file.md

# Bash is just the default, the command to run is an optional second arg.
glu README.md 'node hello.js'

# You can also download Markdown files from the internet easily.
glu https://maddiem4.cc/software/practice/calling_asm_from_c

支持哪些语言检测文件名?

目前,非常少。您可以帮忙!我对于v1.0.0版本的发布标准是要与PrismJS的语言支持列表保持一致,原因是Obsidian使用它,而且我大部分时间都在Obsidian中编写Markdown文档。

  • 汇编
  • Bash
  • C
  • CSS
  • JavaScript
  • Rust

贡献

克隆目录,尝试修改,提交一个Pull Request。如果您之前使用过Rust和Cargo,这应该不会很难或令人惊讶。如果确实如此,可能是因为我难以预料的原因。

请注意,src/filetype.rs可能是大多数人希望贡献以改进语言支持的地方。我会非常感激地接受这些Pull Request,但前提是它们包含相关的测试!有一些可以用来作为起点的例子,所以这并不像听起来那么困难。

如您通过LICENSE文件所看到的,GLU是在GPLv3许可下。

依赖项

~12–26MB
~412K SLoC