3个版本 (破坏性更新)

0.3.0 2023年8月3日
0.2.0 2023年6月22日
0.1.0 2023年6月22日

#2603解析器实现

Download history 33/week @ 2024-03-11 18/week @ 2024-03-18 26/week @ 2024-03-25 91/week @ 2024-04-01 16/week @ 2024-04-08 25/week @ 2024-04-15 21/week @ 2024-04-22 9/week @ 2024-04-29 24/week @ 2024-05-06 15/week @ 2024-05-13 7/week @ 2024-05-20 26/week @ 2024-05-27 20/week @ 2024-06-03 19/week @ 2024-06-10 28/week @ 2024-06-17 18/week @ 2024-06-24

86 每月下载量
用于 markdown-it-gfm

Apache-2.0

54KB
156

markdown-it-heading-anchors.rs

crates.io

一个markdown-it.rs 插件,为标题添加id属性,并可选项地添加永久链接。

默认行为设计为尽可能模仿GitHub的标题锚点,但也可以根据您的需求进行配置。

使用方法

let parser = &mut markdown_it::MarkdownIt::new();
markdown_it::plugins::cmark::add(md);
markdown_it_heading_anchors::add(parser);
parser.parse("# Heading").render();
// <h1><a aria-hidden="true" class="anchor" id="heading" href="#heading">
// <svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg>
// </a>Head</h1>

选项

要更改默认选项,请使用add_with_options函数

use markdown_it_heading_anchors::{
    add_with_options, HeadingAnchorOptions, AnchorPosition
};

let parser = &mut markdown_it::MarkdownIt::new();
markdown_it::plugins::cmark::add(md);
let mut options = HeadingAnchorOptions::default();
options.position = AnchorPosition::After;
options.inner_html = String::from("");
add_with_options(parser, options);
parser.parse("# Heading").render();
// <h1>Heading<a aria-hidden="true" class="anchor" id="heading" href="#heading">¶</a></h1>

可用选项

名称 类型 默认值 描述
min_level u8 1 添加锚点的最小标题级别。
max_level u8 6 添加锚点的最大标题级别。
id_on_heading bool false 是否向标题添加id属性。
position AnchorPosition ::Start 在标题子元素中放置锚点位置。
classes Vec<String> ["anchor"] 添加到锚点的类。
inner_html String 参见示例 添加到锚点内部的HTML(即图标)。

待办事项

  • 忽略图像的alt文本(也支持自定义“textify”?)。
  • 允许自定义slug生成函数。
  • 允许为id属性添加前缀。

致谢

改编自https://github.com/Flet/markdown-it-github-headingshttps://github.com/executablebooks/mdit-py-plugins(参见https://github.com/valeriangalliat/markdown-it-anchor)。

依赖

~8MB
~178K SLoC