#markdown-html #syntax-highlighting #markdown-syntax #markdown #markdown-parser #syntax-highlighter #syntax

femark

使用 pulldown-cmark 和 treesitter 的 Markdown 到 HTML 转换器和代码语法高亮器

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 每月下载次数

MIT/Apache

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中。

主题

默认情况下,此包不美化代码块,只是用从 hh0hh20 的类装饰元素。索引指的是此列表中的元素

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主题,您将找到类似 TSFunctionTSAttribute 的项目,其中包含示例。以下提供了一个基本主题

.hh4 {
  color: purple;
}

.hh3 {
  color: blue;
}

.hh13 {
  color: pink;
}

.hh10 {
  color: green;
}

.hh5 {
  color: gray;
}

.hh18 {
  color: lightgray;
}

依赖关系

~61MB
~2M SLoC