3 个版本
0.0.3 | 2024 年 5 月 29 日 |
---|---|
0.0.2 | 2024 年 5 月 29 日 |
0.0.1 | 2024 年 5 月 28 日 |
793 在 文本处理
109 每月下载次数
在 fmtm 中使用
130KB
2.5K SLoC
FMTM: @ytmimi 的 markdown-fmt
的分支
这是 FMTM(一个友好的 Markdown 格式化器)的依赖项。因此,它需要发布在 crates.io 上。
lib.rs
:
轻松格式化 Markdown。 fmtm_ytmimi_markdown_fmt 支持 CommonMark 和 GitHub Flavored Markdown。
入门指南
use fmtm_ytmimi_markdown_fmt::MarkdownFormatter;
let markdown = r##" # Getting Started
1. numbered lists
1. are easy!
"##;
let expected = r##"# Getting Started
1. numbered lists
1. are easy!
"##;
let output = MarkdownFormatter::default().format(markdown)?;
assert_eq!(output, expected);
使用 MarkdownFormatter
作为构建器
格式化器为您提供了配置 Markdown 格式的控制权。
use fmtm_ytmimi_markdown_fmt::*;
#[derive(Default)]
struct CodeBlockFormatter;
impl FormatterFn for CodeBlockFormatter {
fn format(
&mut self,
buffer_type: BufferType,
_max_width: Option<usize>,
input: String,
) -> String {
let BufferType::CodeBlock { info } = buffer_type else {
unreachable!();
};
match info {
Some(info) if info.as_ref() == "markdown" => {
MarkdownFormatter::default().format(&input).unwrap_or(input)
}
_ => input,
}
}
}
let input = r##" # Using the Builder
+ markdown code block nested in a list
```markdown
A nested markdown snippet!
* unordered lists
are also pretty easy!
- `-` or `+` can also be used as unordered list markers.
```
"##;
let expected = r##"# Using the Builder
- markdown code block nested in a list
```markdown
A nested markdown snippet!
* unordered lists
are also pretty easy!
- `-` or `+` can also be used as unordered list markers.
```
"##;
type MyFormatter = MarkdownFormatter<
FormatterCombination<
FnFormatter<CodeBlockFormatter>,
TrimTo4Indent,
TrimTo4Indent,
Paragraph,
>,
>;
let output =
MyFormatter::with_config_and_external_formatter(Config::sichanghe_opinion()).format(input)?;
assert_eq!(output, expected);
依赖关系
~3MB
~46K SLoC