3 个版本

0.1.2 2023 年 2 月 22 日
0.1.1 2022 年 12 月 23 日
0.1.0 2022 年 10 月 10 日

#1079 in 文本处理


antwerp 中使用

MIT 许可证

97KB
2.5K SLoC

Marcus

描述

Marcus 是一个用 Rust 编写的实验性 Markdown 解析器。它使用 正则表达式 和内置方法(对于 str & String 类型)将 Markdown 转换为 HTML。请注意,由于不支持完整的 Markdown 规范,GitHub 预览无法正确渲染某些测试文件(代码 *.md)。

演示

Cargo.toml 文件的 [dependencies] 部分包含以下依赖项

glob = "0.3.0"
marcus = "0.1.1"

此 Marcus 包可以从 GitHub 仓库 包含

glob = "0.3.0"
marcus = { git = "https://github.com/Malekaia/Marcus" }

在此演示中,使用 fsglob 包将样本文件转换为 HTML

use glob::glob;
use marcus;
use std::fs;

fn main() {

  // Iterate the globbed paths
  for path_buf in glob("./test/**/*.md").expect("GlobError: Failed to read glob pattern") {

    // Get the file path from the glob entry
    let file_path: String = path_buf.expect("GlobError: failed to glob entry").display().to_string();

    // Create the HTML output path
    let output_path: &String = &file_path.replace(".md", ".html");

    // Read the MarkDown from the globbed file
    let md: String = fs::read_to_string(&file_path).expect("ReadError: failed to read file");

    // Convert the HTML to MD using Marcus
    let html: String = marcus::to_string(md);

    // Write the HTML to the HTML output path
    fs::write(output_path, html).expect("WriteError: failed to write to file");
  }
}

注意:本演示中使用的测试文件(代码 .md)及其对应的输出(代码 .html)可从 docs 文件夹 下载。

许可证

此仓库中包含的源代码在 MIT 许可证 下免费分发,有关完整许可证,请参阅 LICENSE.md

依赖项

~3.5–4.5MB
~106K SLoC