3个版本 (破坏性更新)
0.3.0 | 2023年8月3日 |
---|---|
0.2.0 | 2023年6月22日 |
0.1.0 | 2023年6月22日 |
#2603 在 解析器实现
86 每月下载量
用于 markdown-it-gfm
54KB
156 行
markdown-it-heading-anchors.rs
一个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-headings 和 https://github.com/executablebooks/mdit-py-plugins(参见https://github.com/valeriangalliat/markdown-it-anchor)。
依赖
~8MB
~178K SLoC