#mdbook-preprocessor #obsidian #preprocessor #markdown #search-pattern

bin+lib mdbook-obsidian

mdBook 预处理器,用于渲染 Obsidian 特定语法

1 个不稳定版本

0.1.0 2024年2月5日

#1461文本处理

MPL-2.0 许可证

26KB
126

mdbook-obsidian

crates.io MPL 2.0 LICENSE docs.rs Build Test

mdBook 预处理器,用于在 mdBook 中渲染 Obsidian 特定语法。

要查看现有和受支持的语法列表,请参阅 这个 GitHub 问题

⚠️ 进行中 ⚠️

这个 mdBook 预处理器目前仍在开发中,并且仅支持 Obsidian 特定语法的子集。欢迎贡献以扩展受支持的语法 <3

如果您想接管此包的维护或所有权,请通过此包的 GitHub 仓库中的问题来联系。

用法

首先,安装预处理器

cargo install mdbook-obsidian

然后,将预处理器添加到您的 book.toml

[book]
authors = ["Jill Doe"]
language = "en"
multilingual = false
src = "src"
title = "My awesome Book"

# ADD THIS
[preprocessor.obsidian]

开发

工作原理

此预处理器的工作原理主要是通过使用正则表达式来搜索特定模式,例如

> [!CALLOUT_TYPE]
> CALLOUT_BODY

然后将它替换为相应的 HTML 代码,例如

<style>
  /* a bunch of CSS */
</style>
<div class="mdbook-obsidian-callouts mdbook-obsidian-callouts-{kind}">
  <p class="mdbook-obsidian-callouts-title">
    <span class="mdbook-obsidian-callouts-icon"></span>
    CALLOUT_TYPE
  </p>

  CALLOUT_BODY

</div>

扩展预处理器

目前支持的语法在 这个 GitHub 问题 中跟踪。

要添加对某些目前不支持语法的支持,扩展现有的 lib.rs 中的主渲染循环

/// Apply to all chapters
fn handle_chapter(chapter: &mut Chapter) -> Result<(), Error> {
    chapter.content = callouts::render(&chapter.content)?;
    // Add your additional syntax parsing here

    Ok(())
}

使用一个调用相应解析逻辑的函数。

在您的解析逻辑中,使用正则表达式或任何其他方法来扫描您想要支持的语法的特定模式,并将其替换为相应的 HTML 代码。

依赖关系

~13–24MB
~333K SLoC