5 个版本
0.1.5 | 2024年3月25日 |
---|---|
0.1.4 | 2024年2月7日 |
0.1.3 | 2024年1月23日 |
在 文本处理 中排名 435
每月下载量 30
42KB
962 行代码(不含注释)
Mdtrans
使用 Rust 和 Pest 实现的 Markdown 解析器和转换器
这不是最快的解析器/转换器,但它旨在提供最大的灵活性以满足您的需求。
使用方法
#[derive(Default)]
pub struct MyOwnTransformer {
image_count: usize,
image_trans: usize,
}
impl MarkdownTransformer for MyOwnTransformer {
fn peek_image(&mut self, alt: String, url: String, add_tags: HashMap<String, String>) {
self.image_count_total += 1;
}
fn tranform_image(&mut self, alt: String, url: String, add_tags: HashMap<String, String>) -> String {
self.image_trans += 1;
format!("Image {}/{} <img alt=\"{alt}\" href=\"{url}\">", self.image_trans, self.image_count)
}
}
fn main() {
let trans = MyOwnTransformer::default();
let input = " ... ".to_string();
let output = transform_markdown_string(input, &mut trans).unwrap();
println!("{output}");
}
在 transform_markdown_string
函数内部,转换器将执行所有之前的 peek
函数。
这意味着在这个代码中,我们首先计算图像的总数,然后转换每一个。
结果将类似于
Image 1/2 <img alt="toto" href="url">
Image 2/2 <img alt="tutu" href="url">
有关 Markdown 到 HTML 实现的示例,请参阅 此文件
有关特质的定义,请参阅 此文件
贡献
这是一个爱好性质的侧项目,但如果您愿意,也可以做出贡献!
- 我非常感激对 Pest 语法文件 的贡献,因为我并不是这个领域的专家
- 如果您发现某些 Markdown 输入不被此引擎支持(或支持不理想),或者导致错误,您可以打开一个 issue。
依赖关系
约 2–2.8MB
约 56K SLoC