3 个版本
0.0.2 | 2024年5月29日 |
---|---|
0.0.1 | 2024年5月28日 |
0.0.0 | 2024年5月27日 |
#546 in 文本处理
每月下载 117 次
22KB
253 行
ForMaT Markdown
一个友好型 diff 的 Markdown 格式化工具,能够在合理的标点符号和单词上断行以适应行宽。FMTM 是 FMTT 的表亲。
与 Prettier 等格式化工具相比,FMTM 更适合与 Git 一起使用,因为其格式化更加一致,结果导致 diff 更小。
FMTM 使用 FMTT 格式化 Markdown 段落
- 尊重行宽限制。
- 优先在
- 句子末尾如
.
处断行,然后 - 子句末尾如
,
处断行,然后 - 子句开头如
(
,最后 - 连接词如
and
。
- 句子末尾如
- 对使用启发式方法的缩写有限制。
安装
cargo install fmtt
使用方法
$ fmtm --help
ForMaT Markdown diff-friendly,
breaking lines on sensible punctuations and words to fit a line width.
Like FMTT,
FMTM formats its input to have lines shorter than the line width limit
(if possible).
It reads an input file or StdIn and prints the formatted text to StdOut.
Like FMTT, FMTT only preserves leading spaces, not tabs.
Usage: fmtm [OPTIONS]
Options:
-w, --line-width <LINE_WIDTH>
Maximum line width limit. Preserve line lengths if set to 0.
[default: 80]
-f, --filename <FILENAME>
Name of input file; if omitted, read from StdIn.
-c, --change-in-place
If input file is provided, write output to it.
-e, --emphasis-marker <EMPHASIS_MARKER>
Marker for emphasis spans, or preserve the input if set to "".
[default: *]
-s, --strong-marker <STRONG_MARKER>
Marker for strong spans, or preserve the input if set to "".
[default: **]
-i, --indentation <INDENTATION>
Fixed indentation string,
or calculate to align the beginning of content text in each list if set to "".
[default: " "]
-h, --help
Print help (see a summary with '-h')
-V, --version
Print version
示例
有关测试输入及其格式化输出的详细信息,请参阅 src/tests/**.md
,格式化输出在 src/tests/snapshots/
。
本文档本身也是使用 FMTM 格式化的。
感谢
这是 @ytmimi 的 markdown-fmt
的一个分支,为其 Markdown 处理提供动力;它是 rustfmt
的一个概念验证。感谢 @ytmimi 所做的所有努力!
未来工作
这个格式化工具是为我自己开发的。如果您想添加额外功能,请随意分支。欢迎提交拉取请求,但我会尽量保持代码质量。
带 🌹 的项目是我想要的。
未公开配置
我已经在 markdown-fmt
分支中实现了这些选项,但尚未在 CLI 中公开。
- 自定义无序列表样式。目前,它固定为
-
,但可以是*
或保留。 - 自定义有序列表样式。目前,它固定为
1.
,但可以有前导0
或保留。
近期扩展
这些扩展可以通过添加实现 traits 的 struct
来简单实现,这些 traits 是在我 markdown-fmt
分支中的。我倾向于通过调用外部 CLI 应用程序(shell out)来格式化这些其他语言的块。
- 格式化代码块。
- 格式化 HTML 块 🌹。
- 格式化数学表达式 🌹。
- 自定义有序列表编号以自动递增。@ytmimi 要求这样。
Markdownlint 兼容性。
这些功能需要进一步调整 markdown-fmt
本身。
- 只使用带有边框的代码块 🌹。
- 在裸 URL 周围添加
<
>
🌹。 - 每个标题周围留一个空白行 🌹。
- 每个代码块周围留一个空白行 🌹。
原则上不会实现改变内容的功能。例如,修复反向链接和递增标题级别。
目前,可以使用 FMTM 和 Markdownlint 两种方式来格式化 Markdown 文档,类似于运行 isort 和 black,只是顺序无关紧要。
依赖项
~11MB
~180K SLoC