4个版本
0.1.6 | 2024年4月11日 |
---|---|
0.1.5 | 2023年10月4日 |
0.1.4 | 2023年7月12日 |
0.1.3 | 2023年3月21日 |
#420 in HTTP服务器
50 每月下载次数
42KB
911 代码行
femark
使用 pulldown-cmark 和 tree-sitter-highlight crate 本地构建的快速 Markdown 到 HTML 解析器和语法高亮器。欢迎PR。这是一个仍在开发中的项目
安装
cargo add femark
使用
该包公开了两个函数,可以处理您的Markdown并将其编译成HTML。它还将为您生成带有标题标签及其相应级别的目录表。如果没有标题,toc将为None,但如果解析Markdown时发生错误,它将抛出错误。
由于它有一个相当大的包大小,建议在服务器上运行此操作。
use femark::{HTMLOutput, process_markdown_to_html, process_markdown_to_html_with_frontmatter};
let input: &str = "# Hello World!";
// Processes Markdown without looking for frontmatter
let HTMLOutput{content, toc, ..} = process_markdown_to_html(input);
// This one will try to find frontmatter, and is otherwise identica
let HTMLOutput{content, toc, frontmatter, ..} = process_markdown_to_html_with_frontmatter(input, true));
println!("Title: {}", frontmatter.title.unwrap());
支持的语言
- Rust
- Rsx/Rstml
- Typescript
- Tsx
- JavaScript
- Jsx
- Dockerfile
- Python
- Nix
- Go
- C
- HTML
- TOML
- JSON
当前支持的语言大多由我的需求驱动,但如果有需求,请随时提交PR或Issue,我会对其进行审查。
页眉
页眉可以以特定格式包含在Markdown中。在文档开始处,可以包含一个可选的H1标题,接下来是一个包含页眉的代码块。
# Title of My Awesome Post
```toml
author: "benwis"
mantra: "It depends"
```
This is where markdown file content would go.
H1仍将在输出中渲染,但页眉的代码块将被femark移除,不包含在输出的HTML中。
主题
默认情况下,此包不美化代码块,只是用从 hh0
到 hh20
的类装饰元素。索引指的是此列表中的元素
let highlight_names = [
"attribute",
"constant",
"function.builtin",
"function",
"keyword",
"operator",
"property",
"punctuation",
"punctuation.bracket",
"punctuation.delimiter",
"string",
"string.special",
"tag",
"type",
"type.builtin",
"variable",
"variable.builtin",
"variable.parameter",
"comment",
"macro",
"label",
]
例如,hh0将指的是一个属性,hh20将是一个标签。您需要为每个属性添加一些CSS类。由于这是一个常见的tree-sitter主题,如果您搜索支持tree-sitter的neovim主题,您将找到类似 TSFunction
和 TSAttribute
的项目,其中包含示例。以下提供了一个基本主题
.hh4 {
color: purple;
}
.hh3 {
color: blue;
}
.hh13 {
color: pink;
}
.hh10 {
color: green;
}
.hh5 {
color: gray;
}
.hh18 {
color: lightgray;
}
依赖关系
~61MB
~2M SLoC