maddy
maddy 是一个 C++ 编写的 Markdown 到 HTML 转换的仅头文件解析器库。
支持的操作系统
实际上,它应该可以在任何支持 C++14 标准库的操作系统上运行。
经过测试,可以在以下系统上运行:
- Linux (gcc)
- OSX (clang)
- Windows (Visual Studio 17 2022, mingw)
依赖
- C++14
为什么选择 maddy?
当我在寻找 C++ 的 Markdown 解析器时,没有找到符合我需求的。所以我干脆自己写了一个。
Markdown 语法
支持的语法可以在定义文档中找到。
如何将 maddy 添加到你的 cmake 项目中
你可以使用 FetchContent,它在 CMake 3.11 中引入。
这样你可以在 CMake 文件中添加以下内容:
include(FetchContent)
FetchContent_Declare(
maddy
URL https://github.com/progsource/maddy/.../maddy-src.zip
)
FetchContent_MakeAvailable(maddy)
add_executable(my_exe)
target_link_libraries(my_exe PUBLIC maddy)
请查看 release 获取完整的 zip 文件 URL。
该 zip 文件只包含 CMakeLists.txt
、include
文件夹和 LICENSE
文件。
如何使用
要在你的项目中使用 maddy,只需将 maddy 的 include 路径添加到你的项目中,然后在代码中可以这样使用:
#include <memory>
#include <string>
#include "maddy/parser.h"
std::stringstream markdownInput("");
// 配置是可选的
std::shared_ptr<maddy::ParserConfig> config = std::make_shared<maddy::ParserConfig>();
// config->isEmphasizedParserEnabled = false; // 默认为 true - 此标志已弃用
// config->isHTMLWrappedInParagraph = false; // 默认为 true - 此标志已弃用
config->enabledParsers &= ~maddy::types::EMPHASIZED_PARSER; // 等同于 !isEmphasizedParserEnabled
config->enabledParsers |= maddy::types::HTML_PARSER; // 等同于 !isHTMLWrappedInParagraph
std::shared_ptr<maddy::Parser> parser = std::make_shared<maddy::Parser>(config);
std::string htmlOutput = parser->Parse(markdownInput);
你可以在 include/maddy/parserconfig.h
中找到所有解析器标志。
如何运行测试
(在安装了 git 和 cmake 的 Linux 上测试)
打开你喜欢的终端并输入:
git clone https://github.com/progsource/maddy.git
cd maddy
mkdir tmp
cd tmp
cmake -DMADDY_BUILD_WITH_TESTS=ON ..
make
make test # 或运行 ../build/MaddyTests 可执行文件
如何贡献
有几种可能性:
- 创建 GitHub issue
- 创建一个带有自己分支的拉取请求
请同时阅读 CONTRIBUTING.md。